繁体   English   中英

底部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位项目,添加了4 GB的预留空间,并在其中打开了一个文件对话框。 没有崩溃。

我的repro与您的不匹配,或者您的系统上有不同的东西。 您应该发布您的项目,以便我们可以删除其中一个变量。

不幸的是,我不记得TppWorkerThread是什么。

发布您的项目-所有源文件,资源文件,.vcxproj文件和.sln文件。 然后我们可以进行调查。

为了解决此问题,我们发现由360 sdk安装的shell扩展会导致此问题(xeshlext.dll)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM