CUDA Toolkit 10.1をインストールしてVisualStudio(2015/2017/2019)で既存のCUDAプロジェクトを開くとVisualStudioが異常終了する現象に見舞われた。解決に至るまでの手順を以下に示す。
原因調査
手順1 VisualStudioを/safemodeで起動
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe" /safemode
->CUDA拡張を読み込まないため起動に成功
やはりCUDAが原因か?
手順2 VisualStudioを通常起動
起動途中でエラーダイアログが現れる。
手順3 [Debug]ボタン押下
手順1で起動したVisualStudioのインスタンスをデバッガに選択
手順4 VisualStudioのデバッグ画面で停止箇所を確認
例外がスローされました
0x14DFC5D5 (ig9icd32.dll) で例外がスローされました (devenv.exe 内): 0xC0000005: 場所 0x00000000 の読み取り中にアクセス違反が発生しました
ig9icd32.pdbは読み込まれていません
モジュールig9icd32.dllのソースを見つけるために必要なデバッグ情報がig9icd32.pdbに含まれています
モジュール情報
バージョン: 25.20.100.6323
元の場所: C:\Windows\System32\DriverStore\FileRepository\igdlh64.inf_amd64_8a9535cd18c90bc3\ig9icd32.dll
手順5 逆アセンブル
14DFC5BB mov edx,dword ptr [esi]
14DFC5BD add esp,8
14DFC5C0 mov dword ptr [ebp-8],edx
14DFC5C3 mov ecx,dword ptr [ebp+18h]
14DFC5C6 mov eax,dword ptr [ecx+1D0h]
14DFC5CC mov dword ptr [ebp-0Ch],eax
14DFC5CF mov eax,dword ptr [ecx+1E4h]
14DFC5D5 mov esi,dword ptr [eax] <--- ここでeaxがゼロになっている
14DFC5D7 mov eax,dword ptr [eax+4]
14DFC5DA mov ecx,dword ptr [ecx+1D0h]
14DFC5E0 mov dword ptr [ebp-18h],esi
14DFC5E3 mov esi,dword ptr [ebp+8]
14DFC5E6 mov dword ptr [ebp-14h],eax
推測
ig9icd32.dllのバージョンに問題があり、関数の引数に矛盾が生じているように見える。
ig9icd32.dllというのはIntel(R) HD Graphics 530のドライバ
対処
Intel Graphics 530 driverのバージョンを古いものに戻した。
デバイスマネージャでIntel(R) HD Graphics 530の「ドライバーを元に戻す」を実行。
25.20.100.6323 -> 20.19.15.4312 (20.19.15.4835でもOK)
結果
Visual Studioで無事CUDAプロジェクトを開くことに成功!