我在基于对话框的MFC应用程序中添加了一个“打开文件”对话框。现在,通过按下“打开”或“取消”按钮关闭打开文件对话框后一分钟(!)我的应用程序崩溃了。当它崩溃时,输出中会发生以下情况:
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();
什么可能导致这样的事情?
我该如何调试呢?
答案 0 :(得分:3)
我在Windows 7 x64中遇到了这个完全问题,并且通过在尚未选择的所有Win32异常上启用断点(在VS2015例外标签中),我能够将其缩小到已知问题使用可选的Microsoft修补程序解决的fundisc.dll:https://support.microsoft.com/en-us/kb/2494427
它还解决了我的PC上文件资源管理器窗口在看似随机的时候崩溃的问题。所有这些都是由该修补程序修复的网络COM对象中的一些死锁引起的。