0

ヒープが破損しているため、システム環境変数を使用して gcUnmanagedToManaged MDA を有効にしました。残念ながら、もうアプリを実行できません。私はいつも次のようなものを手に入れます:

(a78.1150): Unknown exception - code e053534f (first chance)
eax=00000000 ebx=00dff8ac ecx=00000000 edx=00000000 esi=00000003 edi=00000000
eip=7779013d esp=00dff85c ebp=00dff8f8 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!NtWaitForMultipleObjects+0x15:
7779013d 83c404          add     esp,4

すべてのスレッドが強制終了されたようです (XXXX):

0:002> !threads
ThreadCount: 5
UnstartedThread: 1
BackgroundThread: 3
PendingThread: 0
DeadThread: 0
Hosted Runtime: no
                                      PreEmptive   GC Alloc           Lock
       ID OSID ThreadOBJ    State     GC       Context       Domain   Count APT Exception
XXXX    1  c98 00401568      6020 Enabled  00000000:00000000 003c7698     4 STA
XXXX    2  4cc 0040be80      b220 Enabled  00000000:00000000 003c7698     0 MTA (Finalizer)
XXXX    3 1150 05525948      7220 Disabled 00000000:00000000 003c7698     0 STA System.StackOverflowException (0265106c)
XXXX    4  e2c 055778c0   200b220 Enabled  00000000:00000000 003c7698     1 MTA
XXXX    5    0 055b4a28      1600 Enabled  00000000:00000000 003c7698     0 Ukn

取り除くとすぐにCOMPLUS_MDA=gcUnmanagedToManaged、期待どおりに機能します。私のシステムは、.net 3.5 SP1 を使用した x86 です。

ヒントはありますか?

更新:私もそれをデバッグしようとしました:

0:002> k 0xffff
ChildEBP RetAddr  
00eef8cc 757015e9 ntdll!NtWaitForMultipleObjects+0x15
00eef968 75091a2c KERNELBASE!WaitForMultipleObjectsEx+0x100
00eef9b0 75094220 KERNEL32!WaitForMultipleObjectsExImplementation+0xe0
00eef9cc 724a7821 KERNEL32!WaitForMultipleObjects+0x18
00eefa2c 724a777e mscorwks!DebuggerRCThread::MainLoop+0xe9
00eefa5c 724a76a5 mscorwks!DebuggerRCThread::ThreadProc+0xe5
00eefa8c 750933aa mscorwks!DebuggerRCThread::ThreadProcStatic+0x9c
00eefa98 777a9ef2 KERNEL32!BaseThreadInitThunk+0xe
00eefad8 777a9ec5 ntdll!__RtlUserThreadStart+0x70
00eefaf0 00000000 ntdll!_RtlUserThreadStart+0x1b
4

0 に答える 0