5

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++

C++ アプリケーションは、Delay Load DLL を使用して .NET コードをロードしています。

クラッシュが発生するコンピュータは非常に強力なマシン (12 コア CPU、48 ギガ RAM) であり、影響があるかどうかはわかりません。しかし、クラッシュは常に発生するわけではないため、競合状態またはリソースの問題のように見えます。

このフォーラム スレッドは私のケースを説明していますが、解決策はありません。

なぜこれが起こっているのでしょうか?

4

2 に答える 2

0

アプリケーションでこれと同じクラッシュが発生し、コールスタックもまったく同じです。ただし、私のクラッシュは、ネイティブDLLが別のネイティブDLLへの遅延ロード依存関係を持っているという点で異なります。

.NETアセンブリのロードを遅らせることは決してありません。.NETアセンブリは、マネージアセンブリローダー関数を使用してロードされることになっています。また、LoadLibraryを呼び出してロードすることもできません。

結局、クラッシュの原因はわかりませんが、.NETアセンブリの読み込みの遅延を完全に削除します。

于 2012-05-31T12:43:36.940 に答える