Wenn ich unter Windows 7 x64 im x86-Modus eine ziemlich komplexe, frei laufende Anwendung anhänge, läuft sie eine Zeit lang und wird dann reproduzierbar beendet.
MyApp.exe Managed (v4.0.30319)' has exited with code -1073740791 (0xc0000409).
unmittelbar gefolgt von
MyApp.vshost.exe: Managed (v4.0.30319)' has exited with code 0 (0x0).
Manchmal, wenn es OK läuft, würde es meinen Haltepunkt treffen, ich werde den Zustand überprüfen, aber wenn ich F5 drücke, um weiterzumachen, wird die Anwendung auf die gleiche Weise beendet.
Eine schnelle Suche nach dem Fehlercode zeigt mir, dass es sich um einen Stack Buffer Overrun handelt. Ich habe gehört, dass dies durch fehlerhaften, nicht verwalteten Interop-Code verursacht werden könnte.
Ich kann das Programm vom Debugger aus ausführen (F5), aber beim freien Ausführen und Anhängen tritt dieses Problem immer auf.
Haben Sie eine Idee, wie ich es eingrenzen könnte?
EDIT: Hier ist ein Callstack, den ich auf einer anderen Maschine (Windows Server 2008 R2 x64) hier sehe, könnte verwandt sein:
clr.dll!__crt_debugger_hook()
clr.dll!___report_gsfailure() + 0xeb bytes clr.dll!_DoJITFailFast@0() + 0x8 Bytes clr.dll!CrawlFrame::SetCurGSCookie() + 0x2e9c4f bytes
clr.dll!StackFrameIterator::Init() + 0x60 Bytes
clr.dll!Thread::StackWalkFramesEx() + 0x8a bytes
clr.dll!Thread::StackWalkFrames() + 0x87 bytes clr.dll!CNameSpace::GcScanRoots() + 0xd7 Bytes clr.dll!WKS::gc_heap::mark_phase() + 0xae bytes
clr.dll!WKS::gc_heap::gc1() + 0x7b bytes
clr.dll!WKS::gc_heap::garbage_collect() + 0x1c1 bytes
clr.dll!WKS::GCHeap::GarbageCollectGeneration() + 0xba bytes
clr.dll!WKS::gc_heap::try_allocate_more_space() + 0x1cd0 bytes clr.dll!WKS::gc_heap::allocate_more_space() + 0x13 bytes
clr.dll!WKS::GCHeap::Alloc() + 0x507 Bytes clr.dll!Alloc() + 0x5a bytes
clr.dll!SlowAllocateString() + 0x41 Bytes
clr.dll!UnframedAllocateString() + 0x11 Bytes
clr.dll!StringObject::NewString() + 0x26 Byte clr.dll!Int64ToDecStr() + 0x12e Bytes
clr.dll!COMNumber::FormatInt64() + 0x17e Bytes mscorlib.ni.dll!6c60b8e1()
[Frames unten können falsch sein und/oder fehlen, keine Symbole für mscorlib.ni.dll geladen]
EDIT2 Auf dem x64-Build der Anwendung scheint alles in Ordnung zu sein, das Problem tritt nur bei x86 auf.