dec*_*jau 5 c++ windows dll exception delay-load
我的应用程序在使用延迟加载 DLL 时遇到过间歇性崩溃的情况。我们在几个不同的调用堆栈中都看到了崩溃,但0xC06D007E: Module not found在__delayLoadHelper2.
连续多次(连续)调用该进程时会引发异常。这是一个示例调用堆栈:
KERNELBASE.dll!RaiseException() + 0x3d bytes
MYDLL.dll!__delayLoadHelper2(const ImgDelayDescr * pidd=0x000000000012f650, __int64 (void)* * ppfnIATEntry=0x000000000012f570) Line 331 C++
MYDLL.dll!__tailMerge_MyDelayLoadDLL_dll() + 0x3f bytes Unknown
MYDLL.dll!MyUserFunction() Line 91 + 0x5 bytes C++
Run Code Online (Sandbox Code Playgroud)
C++ 应用程序使用 Delay Load DLL 来加载 .NET 代码。
发生崩溃的计算机是非常强大的机器(12核CPU,48G RAM),我不确定它是否对其有影响。但由于崩溃并不总是发生,因此它看起来像是竞争条件或资源问题。
这个论坛帖子描述了我的情况,但没有解决方案。
知道为什么会发生这种情况吗?
我的应用程序也发生了同样的崩溃,并且调用堆栈也完全相同。然而,我的崩溃有所不同,因为本机 DLL 对另一个本机 DLL 具有延迟加载依赖性。
我永远不会延迟加载 .NET 程序集。.NET 程序集应该使用托管程序集加载器函数来加载。它们也不应该通过调用 LoadLibrary 来加载。
最后,我不确定导致崩溃的原因,但我会完全删除 .NET 程序集的延迟加载。
| 归档时间: |
|
| 查看次数: |
11778 次 |
| 最近记录: |