卸载 DLL 时与计时相关的崩溃?

发布于 2024-09-03 12:41:21 字数 372 浏览 3 评论 0原文

我知道我在这里伸手去拿救命稻草,但这是一个谜......任何指示或帮助都将受到欢迎,所以我呼吁那些比我更聪明的人:

我们仅在我们的发布二进制文件中展示了崩溃。当二进制文件自行关闭并终止它所依赖的子库时,就会发生崩溃。其重现能力取决于机器 - 有些机器可以 100% 可靠地重现崩溃,有些根本不会出现问题,有些则介于两者之间。崩溃发生在某个子库的深处,当将碎石带入调试器 (MSVC 2008 SP1) 进行检查时,堆栈很可能已损坏。在调试器下运行二进制文件可以防止错误的发生,远程调试以及通过 VNC 连接到机器(所有事情)也是如此。我们尝试安装 Microsoft 驱动程序开发工具包,这样做也消除了该错误。

下一个最好看的地方是什么?在这种情况下什么工具最好?这听起来像是竞争条件还是其他什么?

I know I'm reaching for straws here, but this one is a mystery... any pointers or help would be most welcome, so I'm appealing to those more intelligent than I:

We have a crash exhibited in our release binaries only. The crash takes place as the binary is bringing itself down and terminating sub-libraries upon which it depends. Its ability to be reproduced is dependent on the machine- some are 100% reliable in reproducing the crash, some don't exhibit the issue at all, and some are in between. The crash is deep within one of the sublibraries, and there is a good likelihood the stack is corrupt by the time the rubble can be brought into a debugger (MSVC 2008 SP1) to be examined. Running the binary under the debugger prevents the bug from happening, as does remote debugging, as does (of all things) connecting to the machine via VNC. We have tried to install the Microsoft Driver Development Kit, and doing so also squelches the bug.

What would be the next best place to look? What tools would be best in this circumstance? Does it sound like a race condition, or something else?

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

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

发布评论

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

评论(4

川水往事 2024-09-10 12:41:21

您尝试过 Rational Purify 吗?我用过这个(大约 4-5 年前)。然后,它有助于追踪内存错误、堆栈损坏、无效句柄等。

Have you tried Rational Purify? I've used this (some 4-5 years ago). Then it was helpful in tracking down memory bugs, stack corruption, invalid handles etc.

童话 2024-09-10 12:41:21

尝试 AppVerifierGFlags 一起查找页堆损坏。

您可能需要 WinDbg 作为调试器而不是 Visual Studio 来进行调试。

我还推荐这本书,介绍高级 Windows 调试,以跟踪崩溃,例如你正在打的一个。

Try AppVerifier and GFlags together to find Page Heap corruption.

You'll likely need WinDbg as your debugger instead of Visual Studio to debug.

I also recommend this book on advanced Windows debugging for tracking down crashes such as the one you are hitting.

吲‖鸣 2024-09-10 12:41:21

您是否有机会使用线程池而不取消或等待未完成的作业对象完成?

Are you using the threadpool by any chance and not cancelling or waiting for outstanding job objects to complete?

烟酒忠诚 2024-09-10 12:41:21

问题是有害的 的设置冲突Visual Studio 下的 _SECURE_SCL 标志,导致 DLL 及其依赖项之一之间出现静默 ABI 不兼容。

The problem was a conflicting setting of the pernicious _SECURE_SCL flag under Visual Studio, causing silent ABI incompatibilities between the DLL and one of its dependencies.

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