2

ダイアログベースの MFC アプリケーションに「ファイルを開く」ダイアログを追加しました。ここで、[開く] または [キャンセル] ボタンを押してファイルを開くダイアログを閉じてからちょうど 1 分 (!)、アプリケーションがクラッシュします。クラッシュしている間、出力で次のことが起こっています。

1) 多数の Windows スレッドが終了しています。

2) 一連の COM 例外 (0x80010108 "呼び出されたオブジェクトがクライアントから切断されました" および 0x800401FD "オブジェクトがサーバーに接続されていません" など) がスローされています。

3) 最後に、未処理の例外が発生します: 0xC0000005: アクセス違反が場所 0xfeeefeee を読み取り、コール スタックが ole32.dll を指しています。

私が当惑していると言っても過言ではありません。ダイアログを呼び出すコードは次のとおりです。

CFileDialog fileDlg( TRUE, _T(".txt"), NULL, OFN_ALLOWMULTISELECT | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST, 
                     _T("Text file (*.txt)|*.txt||"), this);
INT_PTR res = fileDlg.DoModal();

何がそのようなことを引き起こす可能性がありますか?

どうすればデバッグできますか?

4

1 に答える 1

3

私は Windows 7 x64 でこの正確な問題を抱えていました。まだ選択されていないすべての Win32 例外 (VS2015 例外タブ) でブレークポイントを有効にすることで、オプションで解決された fundisc.dll の既知の問題に絞り込むことができました。 Microsoft のホットフィックス: https://support.microsoft.com/en-us/kb/2494427

また、ファイル エクスプローラー ウィンドウが一見ランダムなタイミングでクラッシュするという私の PC の問題も解決しました。すべては、その修正プログラムによって修正されたネットワーク COM オブジェクトのデッドロックが原因でした。

于 2016-09-27T17:48:02.730 に答える