当底部4GB已满时,FileDialog崩溃
FileDialog crash when bottom 4GB full
为了捕捉64位中的指针截断错误,我添加了这里提到的代码片段,该代码片段保留了底部4GB的内存,因此分配高于32位。在MFC x64测试应用程序中,我首先在InitInstance()中调用保留函数。然后我添加了一个简单的按钮:
CFileDialog dlg(TRUE);
dlg.DoModal();
调用DoModal最终在"无人区"的某个地方崩溃,调用堆栈:
> 000000018000163b()
0000000100000024()
0000000000000001()
这不是MFC特定的,因为我在.NET FileDialog中获得了相同的行为。我认为这是我无法控制的事情,因为实际的fileDialog会短暂显示,然后崩溃。感觉像是一个shell扩展之类的,但我不知道它是从哪里来的,因为调用堆栈没有帮助——但我想知道我能做些什么!
如果我取消了特殊的预订功能,我就不会再崩溃了。
困惑!
我无法修复此崩溃。我创建了一个64位项目,添加了4GB的预留,并在其中打开了一个文件对话框。没有崩溃。
要么我的repo与你的不匹配,要么你的系统有什么不同。你应该发布你的项目,这样我们就可以删除其中一个变量。
不幸的是,我不记得TppWorkerThread是什么。
发布您的项目--所有源文件、资源文件、.vcxproj文件和.sln文件。然后我们可以调查。
为了跟进这个问题,我们发现360 sdk安装的shell扩展导致了问题(xeshlext.dll)
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 内联映射初始化的动态atexit析构函数崩溃
- 执行函数时导致崩溃的变量
- 程序崩溃并显示"std::out_of_range"错误
- CoInitialize()在单独的线程上崩溃而不返回
- 使用调试/崩溃报告将应用程序部署到客户端
- 为什么所有C++编译器都会崩溃或挂起此代码
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- 为什么我的多线程作业队列崩溃
- ExtractIconEx:可以工作,但偶尔会崩溃
- 为什么引用传递会导致此崩溃(C++)
- 试图创建流或fopen时程序崩溃
- 类对象数组的问题会导致崩溃
- 排序时无法执行交换操作.我做的时候它会崩溃.为什么
- 为什么要增加导致崩溃的指针
- 在虚幻引擎中删除NXOpen对象时崩溃
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- Visual Studio在尝试读取resource.txt文件时崩溃
- 当底部4GB已满时,FileDialog崩溃