当底部 4GB 已满时 FileDialog 崩溃

发布于 2025-01-08 05:42:59 字数 625 浏览 0 评论 0原文

为了捕获 64 位中的指针截断错误,我添加了提到的代码片段 此处保留底部 4GB 内存,因此分配高于 32 位。在 MFC x64 测试应用程序中,我首先在 InitInstance() 中调用预留函数。然后我添加了一个简单执行以下操作的按钮:

CFileDialog dlg(TRUE);
dlg.DoModal();

调用 DoModal 最终会在“无人区”中的调用堆栈中崩溃:

>   000000018000163b()  
    0000000100000024()  
    0000000000000001()  

这不是 MFC 特定的,因为我使用 .NET FileDialog 得到了相同的行为。我认为这是我无法控制的事情,因为实际的 fileDialog 会短暂显示然后崩溃。感觉像是一个外壳扩展或其他东西,但我无法知道它来自哪里,因为调用堆栈没有帮助 - 但我想知道是否有什么我可以做的!

如果我删除特殊的预订功能,我就不会再遇到崩溃了。

困惑!

in order to catch pointer truncation bugs in 64 bits, I added the code snippet mentioned here that reserves the bottom 4GB of memory so allocs are above 32 bits. In a MFC x64 test app, I call the reservation function first thing in InitInstance(). I then added a button that simply does:

CFileDialog dlg(TRUE);
dlg.DoModal();

Calling DoModal eventually crashes somewhere with a callstack in "no mans land":

>   000000018000163b()  
    0000000100000024()  
    0000000000000001()  

This is not MFC specific since I get the same behavior with a .NET FileDialog. I think it's something out of my hands since the actual fileDialog shows up briefly and then crashes. Feels like a shell extension or something but I can't get where it's coming from since the call stack isn't helping - but I want to find out if there's anything I can do!

If I remove the special reservation function I don't get the crashes anymore.

Puzzled!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

颜漓半夏 2025-01-15 05:42:59

我无法重现此崩溃。我创建了一个 64 位项目,添加了 4 GB 预留空间,并在其中打开了一个文件对话框。没有崩溃。

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

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

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

I am unable to repro this crash. I created a 64-bit project, added the 4 GB reservation, and opened a file dialog within it. No crash.

Either my repro doesn't match yours, or there is something on your system that is different. You should post your project so that we can remove one of the variables.

Unfortunately I don't remember what a TppWorkerThread is.

Post your project -- all source files, resource files, .vcxproj files, and .sln files. Then we can investigate.

椒妓 2025-01-15 05:42:59

针对这个问题,我们发现是360 sdk安装的一个shell扩展导致了这个问题(xeshlext.dll)

To follow up on this issue, we found out that a shell extension installed by the 360 sdk causes the issue (xeshlext.dll)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文