現象
ある日突然 Askpass.exe から「アプリケーションを正しく起動できませんでした」というエラーが表示されるようになってしまいました。
Askpass.exe – アプリケーション エラー
アプリケーションを正しく起動できませんでした (0xc0000142)。[OK] をクリックしてアプリケーションを閉じてください。
しかも一度だけではなく、放置していると同じエラーダイアログが溜まって数~十数回「OK」をクリックするはめになります。
発生するタイミングはランダムのように見えるため、文字入力やコーディング中にエラーダイアログが起動して入力を妨げられることも……。
さすがに作業しづらいので、対処することにしました。
調査
検索すると Askpass.exe はどうも SourceTree のコンポーネントで Git で使用する SSH の鍵を管理する部分に関する GUI を担うようです。
関連する場所としては、 SourceTree の「ツール」→「オプション」→「認証」のところの設定周りでしょうか……。
以上より、 SourceTree 周りの環境を整理すると以下の通りです。
- OS: Windows 10 環境
- Git: SourceTree が持っている Git ではなく、システムインストールの Git を使用。バージョンは
2.30.0.windows
。 - SourceTree:
3.4.2.0
対処1 (失敗)
Askpass.exe 自体は Gitクライアント にも類似のファイル (git-askpass.exe
) が存在していた (PATH\TO\INSTALLED_DIRECTORY\Git\mingw64\libexec\git-core
下)のと、 Git のマイナーバージョンが上がっていたので以下のようにしました。
- Gitクライアント本体: 上書きインストールによるアップデート (
2.30.0.windows
→2.30.0.windows.2
) - SourceTree: コントロールパネルからアンインストール→再度インストール (
3.4.2.0
)
が、改善せず。 SourceTree にいたっては設定などの情報が残っていたため、アンインストールで綺麗に消えていたわけでもなさそう……。
対処2
そこで今度は SourceTree 関連のファイルを削除することにしました。
- SourceTree の「ツール」→「オプション」→「認証」で保存されているアカウント情報を手動で全て削除
- SourceTree を閉じる
- コントロールパネルから SourceTree をアンインストール
PATO\TO\Users\<USERNAME>\AppData\Local\Atlassian
配下のファイルを別フォルダにバックアップPATO\TO\Users\<USERNAME>\AppData\Local\Atlassian
配下のファイルを全部削除 (過去バージョンのものも含めて)- SourceTree のナレッジベース では個人設定情報をリフレッシュさせるには以下の手順で良いそうですが、今回はきれいさっぱりにしたかったためあえて全部削除しました
- SourceTree を閉じる
PATO\TO\Users\<USERNAME>\AppData\Local\Atlassian\SourceTree\
とPATO\TO\Users\<USERNAME>\AppData\Local\Atlassian\SourceTree.exe<ランダム文字列>\<バージョン番号(今回は 3.4.2.0)>\
フォルダのファイルをバックアップPATO\TO\Users\<USERNAME>\AppData\Local\Atlassian\SourceTree\
下 の以下の3つのファイルを削除bookmarks.xml
opentabs.xml
userhosts
PATO\TO\Users\<USERNAME>\AppData\Local\Atlassian\SourceTree.exe<ランダム文字列>\<バージョン番号(今回は 3.4.2.0)>\
下 のuser.config
ファイルを削除- SourceTree を起動し、正常に動作するか確認する
- SourceTree のナレッジベース では個人設定情報をリフレッシュさせるには以下の手順で良いそうですが、今回はきれいさっぱりにしたかったためあえて全部削除しました
- SourceTree を再度インストール
- Bitbucket or Bitbucket Server の選択: スキップ
- オプション:
- Mercurial もインストール
- 改行の自動設定: チェックを外す (Git本体 側で LF 統一するようにしているため)
- ユーザ名・メールアドレス: Git本体に記憶されている情報を使用
- SSH鍵の読み込み: 「いいえ」でスキップ
- インストール完了後: 「ツール」→「オプション」→「Git バージョン」で「System」となっていることを確認 (SourceTree 本体で持っている Git ではなく、インストール済みの Git を使用)
これでSourceTree の「ツール」→「オプション」→「認証」を開くと……なぜかいくつかのアカウント情報が記録されていました。おそらく Git 本体に記録されていた情報だと思います詳細は不明……。
ただし、全てではないので改めて追加する必要があります。それについては別途設定するということで、ひとまず今回はこれで様子見とします。
様子見の結果
様子を見ていた結果ですが、冒頭のエラーは表示されなくなりました。
代わりに、同じようなタイミングで認証のダイアログが表示されるのですが、一瞬で閉じられるため今のところさほど影響は出ていません。
一旦解決、といったところでしょうか。