2017-07-26 3 views
0

App wird in Ereignisprotokoll beim Start und Anwendungsfehler Absturz gibt folgende Informationen:
Fehlgeschlagene Modulname: KERNELBASE.dll, Version: 6.2.15063.483, Stempelzeit: 0xc3955624
Ausnahmecode: 0xe0434f4d
Fehler Offset : 0x000eb802
Wie kann ich die Ursache eines AppCrash auf Unhandled Exception in KernelBase.dll vor Application Start feststellen?

Hier ist die Hintergrundgeschichte
Auf einem unserer Kunden Netzwerke, unsere App abstürzt, bevor es kann sogar offen. Ich habe nun tagelang nach Antworten gesucht und konnte das noch nicht lösen. Ich begann mit einer grundlegenden Fehlerbehebung, und nachdem ich keine rauchende Waffe gefunden hatte, aber festgestellt hatte, dass ein neues Benutzerprofil das Problem löste, schlug ich vor, dass es eine gute Lösung wäre, um wieder zu starten und wieder zu laufen. Die ausgelagerte IT-Abteilung stimmte zunächst zu, hatte jedoch Schwierigkeiten, Benutzerdaten in ein neues Profil zu migrieren, und war nie in der Lage, den betroffenen Benutzer auf ein neues Profil zu verschieben. Nun tritt das Problem auf einem anderen Computer in ihrem Netzwerk auf und sie drängen darauf zurück, dass das Problem bei unserer Anwendung liegt und wir sollten die Zeit dafür verwenden, es zu beheben. Ich stimme zu, dass wir es beheben sollten, wenn es in unserem Code ist, aber bisher scheint es nicht einmal weit genug zu sein, um unseren Code zu erreichen. Außerdem haben wir dies nirgendwo anders gesehen, außer in diesem einen Netzwerk mit den zwei Konten, die sich auf einem Domänen-PC mit einem lokalen Konto anmelden.

Anwendung Info

  • VB.NET Windows Forms-Anwendung, Ja .NET 4.5
  • Targeting, gibt ein Handler vorhanden UnhandledException in der Datei ApplicationEvents.vb Application Event ist.

User Environment Info

  • Domain-Netzwerk, auf einem Domain-PC, aber angemeldet mit einem Nicht-Domäne Lokale Konto mit lokalem Administratorkontotyp. Die beiden betroffenen Benutzer melden sich beide mit lokalen Konten an. Bisher hat dies keine Auswirkungen auf die Anmeldung eines Domain-Accounts.
    EDIT: Korrektur, der zweite PC, auf dem diese auftritt, ist tatsächlich nicht mit der Domäne verbunden.
  • Workstation mit Windows 10 Pro v1703 mit Updates aktuellen
  • Anwendung startet in Ordnung, wenn Erhöhte lief, aber dies verursacht andere Probleme später so sie immer mit als Administrator ausführen keine akzeptable Lösung.
  • Die Anwendung lief auf diesem PC bis vor kurzem aktualisiert.
  • Das Problem tritt nicht auf, wenn wir uns mit einem neuen Domänen- oder Nichtdomänenkonto mit oder ohne lokale Administratorrechte anmelden. Es scheint nur auf den spezifischen Benutzerprofil bezogen werden sehen die Probleme

Fehlerbehebung bisher

  • dutzende Beiträge online lesen mit kernel beschäftigen.dll Abstürze und konnte man nicht finden, die ein Update hatte die
  • Uninstalled gearbeitet und neu installiert die Anwendung
  • deinstalliert und neu installiert .NET hinzufügen/entfernen Windows-Komponenten
  • hinzugefügt einige Ereignisprotokolleinträge im Application.Startup Ereignis und das Load-Ereignis auf dem Begrüßungsbildschirm und das Startformular, um zu sehen, ob wir so weit gekommen sind. Getestet an Arbeitsstationen und Protokollierung ist erfolgreich. Auf betroffenen Computern erfolgt keine Protokollierung, daher scheint der Absturz bereits vor dem Application.Startup-Ereignis aufgetreten zu sein.
  • ProcMon verwendet, um die App zu überwachen, während es abgestürzt ist und die letzte Zeile, bevor der Prozess beendet ist eine Operation QueryNameInformationFile-C: \ Windows \ System32 \ ntdll.dll mit einem Ergebnis von ERFOLG. Ich habe Protokolle von ProcMon normal ausgeführt (mit dem Absturz) und Hoch (ohne den Absturz) ausgeführt. Ich habe versucht zu vergleichen, aber es gibt Tausende von Einträgen und nichts steht wirklich als Ursache heraus.

  • Erforscht und verwendet einige Debugging-Tools, um mehr Daten einschließlich ProcMon, ProcDump und WinDbg zu sammeln. Bis jetzt das einzige, was ich hier gefunden habe, ist die gleiche kernelbase.dll Ausnahme Info, aber nur Codes zur Verfügung gestellt werden, keine sinnvolle Nachricht. Ich hatte Probleme beim Laden der Symbole, aber ich denke, dass ich das herausgefunden habe. Ich bin neu in WinDbg, also kann ich es nicht in 100% gewählt haben. Ich konnte nicht erreichen, dass die CLR erfolgreich geladen wurde, indem .loadby sos clr verwendet wurde. Ich musste diese Arbeit verwenden, um SOS mit zu laden. Laden Sie C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ SOS.dll und versuchte sogar c: \ windows \ Microsoft.NET \ Framework \ v4 .0.30319 \ clr.dll, bekomme aber immernoch nur codierte Ausnahmeinfo und keine Nachricht in Englisch. Hier ist, was ich bekomme, wenn in WinDbg mit .excr nach der Dump-Datei geladen, die unter Verwendung ProcDump

    eax=01fcf898 ebx=e0434f4d ecx=00000001 edx=00000000 esi=01fcf928 edi=022da1e0 
    eip=7453b802 esp=01fcf898 ebp=01fcf8f0 iopl=0   nv up ei pl nz ac po nc 
    cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b    efl=00000212 
    KERNELBASE!RaiseException+0x62: 
    7453b802 8b4c2454  mov  ecx,dword ptr [esp+54h] ss:002b:01fcf8ec=0911506f 
    
  • ich versuchte mit! Clrstk in WinDbg, aber es sagt "Nein Export clrstk gefunden"

Fragen

mir scheint es eine nicht behandelte CLR Ausnahme vor dem App Inbetriebnahme auftreten, wahrscheinlich wegen einiger Windows-Berechtigungen Konflikte entweder auf eine Datei oder einen Registrierungseintrag, aber ich weiß nicht, wie zu jagen es noch weiter.

  • Wie kann ich mehr Informationen über die spezifische Ausnahme herausfinden, die auftritt? Ich konnte keine Liste der Fehlerkorrekturcodes für kernelbase.dll online finden.
  • Was kann ich noch überprüfen?
+0

Basierend auf Ihrer Beschreibung Ihres "Unhandled Exception" Handlers verwenden Sie das von VB Application Framework bereitgestellte Event. Ich nehme an, dass dies nur Ausnahmen im Hauptthread der Benutzeroberfläche erfasst. Ich empfehle, das [AppDomain.UnhandledException Event] (https://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception (v = vs.110) .aspx # Bemerkungen) zu versuchen. Sie sollten in der Lage sein, das Application FrameWork weiterhin zu verwenden und die 'AppDomain.CurrentDomain.UnhandledException' in ihrem 'Startup'-Ereignishandler zu verdrahten. Dadurch können Sie möglicherweise einige nützliche Informationen erfassen. – TnTinMn

+0

Ich habe das versucht, aber kein Glück. Ich habe zuerst versucht, AddHandlers zum MyApplication.Startup-Ereignis für AppDomain.UnhandledException und System.Windows.Forms.ThreadException hinzuzufügen. Ich habe das gleiche Ergebnis. Es scheint nicht, dass es den Code in dem Startup-Ereignis ausführt. Ich habe dies auf verschiedene Arten bewiesen, indem ich am Anfang des Startup-Ereignisses Code hinzugefügt habe, um ein Feedback zu geben, einschließlich einer msgbox und eines Schreibvorgangs für das Ereignisprotokoll. Ich versuchte auch, das Anwendungsframework zu deaktivieren und stattdessen ein Main() Sub zu verwenden und hatte genau das gleiche Ergebnis. Es stürzt ab, bevor es den Code in Main() ausführt. –

+0

Schläge immer noch meinen Kopf gegen die Wand und keine Hilfe hier oder Technet. Ich habe ein neues lokales Konto mit den gleichen Rechten auf dem Computer erstellt und ein ProcMon-Protokoll erstellt und Seite an Seite mit dem Protokoll des abstürzenden Profils verglichen. Die ersten etwa 60 Zeilen sind identisch, aber dann gibt es eine große Veränderung. Das defekte Profil beginnt mit der Referenzierung von apphelp.dll und Verweisen auf Registrierungsbereiche für AppCompatFlags. Es ist fast so, als ob ein Profil denkt, dass es im Kompatibilitätsmodus ausgeführt werden muss, und das andere nicht. Derjenige, der das tut, ist derjenige, der abstürzt. –

Antwort

0

Ich konnte das beheben, damit die App wieder funktioniert. Nachdem ich zwei ProcMon-Protokolle Seite an Seite verglichen habe (eines aus dem Profil, das abgestürzt ist, und eines aus einem neuen Profil mit denselben Rechten), habe ich festgestellt, dass es auf dem abstürzenden Profil sehr früh auf apphelp.dll referenziert und betrachtet hat AppCompatFlags Schlüssel in der Registrierung. Das hat mich dazu gebracht zu glauben, dass es versucht hat, im Kompatibilitätsmodus zu laufen, was es nicht tun sollte.

Obwohl ich sicherstellte, dass über die Benutzeroberfläche kein Kompatibilitätsmodus festgelegt wurde, indem Sie mit der rechten Maustaste auf das Anwendungssymbol klicken und die Eigenschaften anzeigen, waren noch einige Datensätze in der Registrierung gespeichert. Ich entfernte Einträge für die App von den folgenden Schlüsseln und protokollierte den Benutzer aus und wieder zurück, und das Problem ist weg.Um fair zu sein, habe ich auch ein paar andere Sachen gemacht, die dazu beigetragen haben könnten. Ich habe die .NET Repair Tool heruntergeladen und ausgeführt. Es löste das Problem nicht sofort, nachdem ich es ausgeführt hatte, aber ich dachte, ich würde es erwähnen, nur für den Fall, dass es eine Rolle spielte. Ich lief zuerst das Reparatur-Set, dann gefunden und entfernt die Registrierungseinträge, dann loggte den Benutzer aus und wieder zurück.

Letztlich bin ich nicht wirklich sicher, was verursacht, dass in erster Linie auftreten, aber von was ich lesen Sie, es ist möglich, dass die App einmal abgestürzt ist, und Windows versuchte, einige Kompatibilitätsfehler zu beheben und einige Schlüssel in der Registrierung zu speichern, die letztendlich zum Absturz führten.

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers 

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted 
Verwandte Themen