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

时间:2010-05-28 20:20:19

标签: c++ winapi dll dependency-management secure-scl

我知道我在这里伸手去拿稻草,但这个是个谜......任何指针或帮助都会受到欢迎,所以我对那些比我更聪明的人很有吸引力:

我们的发布二进制文件中只显示了崩溃。崩溃发生在二进制文件自身停止并终止其所依赖的子库时。它的再现能力取决于机器 - 有些在再现碰撞时100%可靠,有些根本没有表现出问题,有些则介于两者之间。崩溃深入其中一个子库中,并且当瓦砾进入要检查的调试器(MSVC 2008 SP1)时,堆栈很可能已损坏。在调试器下运行二进制文件可以防止错误发生,远程调试也是如此(通过VNC连接到机器)。我们已经尝试安装Microsoft驱动程序开发工具包,这样做也会破坏该错误。

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

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

一起尝试AppVerifierGFlags以查找Page Heap损坏。

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

我还建议使用this book进行高级Windows调试,以便跟踪崩溃等崩溃事件。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

问题是Visual Studio下的恶意_SECURE_SCL标志设置存在冲突,导致DLL与其依赖项之间的ABI不兼容。