miauのブログ

はてなダイアリー「miauの避難所」をはてなブログに移行しました

msysgit(Git for Windows) で STATUS_ACCESS_VIOLATION が出る時の対策

git のコマンドを叩くと


0 [main] sh.exe" 6768 handle_exceptions: Exception: STATUS_ACCESS_VIOLATION
1620 [main] sh.exe" 6768 open_stackdumpfile: Dumping stack trace to sh.exe.stackdump
こんなエラーが出る状態になってしまったので、対策方法のメモ。ちなみに試したバージョンは Git-1.8.4-preview20130916.exe です。


Process Monitor で見てみると、sh.exe が起動する時に %TEMP% に対して QueryDirectory を実行して、ファイルの一覧を拾った直後で落ちている様子。このタイミングでこんなエラーが出るってことはどうせ日本語ファイルがらみだろうなー・・・。

ということで、%TEMP% (C:\Users\【ユーザ名】\AppData\Local\Temp)直下にある、名前に日本語を含むファイルとディレクトリを全て消したら、あっさり解決。

条件はよくわからないけど、拡張子部分に日本語があると起きやすいみたいで、いくつか試した感じだと「あああ.あ11」って名前のファイルが一つあるだけで上記のエラーが起きるみたい。

Git-1.7.8-preview20111206.exe

なら正常動作。

という情報もあったけど、Unicode 対応が入ったのが Git-1.7.10-preview20120409.exe 以降なので悩むところ。日本語を使わないリポジトリしか触らないなら、古いバージョンを入れなおしたほうが手っ取り早いかも。

(さっそく追記)

古いバージョンの msys-1.0.dll を使えば OK って話も見つけた。でもこれって Unicode 対応を捨てるってことだよなぁ・・・。