Frage

Wir haben ein großes Vermächtnis VB App aus einer Anzahl von DLLs (ein paar Dutzend oder so) aus, die alle in einem einzigen COM installiert + Server-Anwendung. Ab und zu, passiert etwas, das Ursache umkippen dllhost.exe (und startet automatisch neu), diese Nachricht in dem Protokoll Windows-Anwendungsereignisses verlassen ...

Das System hat eine benutzerdefinierte Komponente aufgerufen, die Komponente ausgefallen ist und eine Ausnahme erzeugt. Dies weist auf ein Problem mit der benutzerdefinierte Komponente. Benachrichtigen Sie den Entwickler dieser Komponente, dass ein Fehler hat aufgetreten ist, und unter ihnen die Informationen zur Verfügung stellen.
Server-Anwendungs-ID: {8CC02F18-2733-4A17-9E5C-1A70CB6B6977}
Server Application Instanz-ID: {1940A147-8A5E-45FA-86FE-DAF92A822597}
Server Application Name: MyTestApp
Die schwerwiegende Art dieses Fehlers hat der Prozess zu beenden.
Ausnahme: C0000005
Adresse: 0x758DA3DA

Quelle: Complus
Ereignis-ID: 4786
Stufe: Fehler

An der Seite ist dies ein weiteres Protokoll, speziell auf dllhost.exe ...

Fehlgeschlagene Anwendung Name: dllhost.exe, Version: 6.0.6000.16386, Zeitstempel: 0x4549b14e
Fehlgeschlagene Modulname: msvcrt.dll, Version: 7.0.6002.18005, Zeitstempel: 0x49e0379e
Ausnahmecode: 0xc0000005
Fehler-Offset: 0x0000a3da
Fehlgeschlagene Prozess-ID: 0x83c
Fehlgeschlagene Anwendung Startzeit: 0x01cb50c507ee0166
Fehlgeschlagene Anwendung Pfad:% 11
Fehlgeschlagene Modulpfad:% 12
Bericht ID:% 13

Ich weiß, dass es einen Fehler in der C-Laufzeit (msvcrt) markiert werden, sondern im Idealfall muß ich diese wieder in die DLL verfolgen, die in msvcrt genannt wird (wahrscheinlich mit schlechten Daten / Parametern). Also ohne einen Debugger zu installieren, gibt es eine Möglichkeit, die DLL, die dies verursacht zu identifizieren? Ich versuche zu sehen, ob es ein Speicherabbild überall kann ich offline analysieren nutzen - und damit die Ansprache an etwas Bestimmtes binden. Aber ohne dass, ich bin nicht sicher, ob das möglich ist. Kann das COM-Subsystem gesagt werden, um eine Minidump zu erzeugen, wenn eine gehostete Anwendung abstürzt (ja, es kann [wahrscheinlich] - gibt es eine Checkbox auf den 'Dump' Reitern?).

Dies ist auf Windows Server 2008 R1 32-Bit (aber auch für Server 2003 als auch interessiert sein).

Es ist nicht die Verfügbarkeit der App beeinflussen -. COM + einfach neu gestartet dllhost und die Anwendung wird fortgesetzt, aber es ist ein Störfaktor, die nützlich zu beheben wären,

Bearbeiten Okay, ich habe ein Crash-Dump bekam, ich habe windbg, aber es hilft nicht. Nicht sicher, ob ich bin dick ist (eine Möglichkeit) oder etwas anderes :-) Ausgabe von !analyze -v unten ist, aber es zeigt mir nichts in unserem DLLs, obwohl es sieht aus wie es nicht in der Lage gewesen FAULTING_IP zu lösen? Ich bin mir nicht sicher, wo neben drehen.

Ich frage mich, wenn irgendwelche meiner pdb ist vertrackt sind und wert sein erzeugenden neuen - hooked in Microsoft Symbol Server, so sollten sie nicht sein, aber nicht sicher, was das Modul es ist (scheinbar) für falsche Symbole Berichterstattung ( BUGCHECK_STR und PRIMARY_PROBLEM_CLASS) (oder sind diese Symbole auf dem Server der Code wurde ursprünglich läuft auf?). Wäre es besser, die PDBs auf dem Server zu setzen selbst?

Wenn nicht, irgendwelche anderen Ideen? Ich habe vor windbg kurz verwendet, aber ich bin kein normaler Benutzer davon, so vielleicht gibt es einige weitere Beschwörungen Ich muss geben, tiefer zu graben? Guidance willkommen: -)

*******************************************************************************
*                                                                             *
*                        Exception Analysis                                   *
*                                                                             *
*******************************************************************************

FAULTING_IP: 
+5c112faf02e0d82c
00000000 ??              ???

EXCEPTION_RECORD:  ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 00000000
   ExceptionCode: 80000003 (Break instruction exception)
  ExceptionFlags: 00000000
NumberParameters: 0

FAULTING_THREAD:  00000f1c
DEFAULT_BUCKET_ID:  WRONG_SYMBOLS
PROCESS_NAME:  dllhost.exe
ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION}  Breakpoint  A breakpoint has been reached.
EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid
MOD_LIST: <ANALYSIS/>
NTGLOBALFLAG:  0
APPLICATION_VERIFIER_FLAGS:  0
MANAGED_STACK: !dumpstack -EE
OS Thread Id: 0xf1c (0)
Current frame: 
ChildEBP RetAddr  Caller,Callee

LAST_CONTROL_TRANSFER:  from 77b15620 to 77b15e74
PRIMARY_PROBLEM_CLASS:  WRONG_SYMBOLS
BUGCHECK_STR:  APPLICATION_FAULT_WRONG_SYMBOLS

STACK_TEXT:  
0022fa68 77b15620 77429884 00000064 00000000 ntdll!KiFastSystemCallRet
0022fa6c 77429884 00000064 00000000 00000000 ntdll!NtWaitForSingleObject+0xc
0022fadc 774297f2 00000064 ffffffff 00000000 kernel32!WaitForSingleObjectEx+0xbe
0022faf0 778e2c44 00000064 ffffffff 00e42374 kernel32!WaitForSingleObject+0x12
0022fb0c 778e2e32 00060848 0022fb5b 00000000 ole32!CSurrogateProcessActivator::WaitForSurrogateTimeout+0x55
0022fb24 00e413a4 0022fb40 00000000 00061d98 ole32!CoRegisterSurrogateEx+0x1e9
0022fcb0 00e41570 00e40000 00000000 00061d98 dllhost!WinMain+0xf2
0022fd40 7742d0e9 7ffde000 0022fd8c 77af19bb dllhost!_initterm_e+0x1a1
0022fd4c 77af19bb 7ffde000 dc2ccd29 00000000 kernel32!BaseThreadInitThunk+0xe
0022fd8c 77af198e 00e416e6 7ffde000 ffffffff ntdll!__RtlUserThreadStart+0x23
0022fda4 00000000 00e416e6 7ffde000 00000000 ntdll!_RtlUserThreadStart+0x1b

STACK_COMMAND:  .cxr 00000000 ; kb ; dt ntdll!LdrpLastDllInitializer BaseDllName ; dt ntdll!LdrpFailureData ; ~0s; .ecxr ; kb

FOLLOWUP_IP: 
dllhost!WinMain+f2
00e413a4 ff15a410e400    call    dword ptr [dllhost!_imp__CoUninitialize (00e410a4)]

SYMBOL_STACK_INDEX:  6
SYMBOL_NAME:  dllhost!WinMain+f2
FOLLOWUP_NAME:  MachineOwner
MODULE_NAME: dllhost
IMAGE_NAME:  dllhost.exe
DEBUG_FLR_IMAGE_TIMESTAMP:  4549b14e
FAILURE_BUCKET_ID:  WRONG_SYMBOLS_80000003_dllhost.exe!WinMain
BUCKET_ID:  APPLICATION_FAULT_WRONG_SYMBOLS_dllhost!WinMain+f2
War es hilfreich?

Lösung

Haben Sie Symbole für die VB dlls? Symbole sind wichtig, um den Anruf-Stapel zu erhalten. Ich hoffe, dass Sie die richtigen Symbole haben. Sie können ld * und dann lme verwenden, die Sie Liste von Symbolen erhalten sollten, die nicht innerhalb windbg überein. Auch den Symbolpfad für MS Symbole gesetzt und sowie für die benutzerdefinierten Code _NT_SYMBOL_PATH

Eine der einfachsten ist die Dump innerhalb DebugDiag , die Ihnen Grund für den Fehler zusammen mit Call-Stack geben sollen. DebugDiag hat Debugger-Erweiterungen für Complus.

Und hier ist ein Befehl zum nativen Call-Stack für die alle Fäden

~*ek

und dieser Schalter auf die aktuelle Ausnahme

.ecxr

Andere Tipps

Debug Mo / WinDbg ist der beste Weg, um dieses Problem zu beheben. Sie sollten alle Module in WinDBG oder den lm-Befehl verwenden können, um die geladenen Module aufzulisten. Der Stack-Trace sollten Sie dann sagen, welche DLLs beteiligt sind. Dies sollte auch ohne die Symbole für den Prozess / dll möglich sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top