Anwendungen werden gestartet, zeigen jedoch keine Benutzeroberfläche

973
Thomas Weller

Ich habe versucht, Anwendungen wie üblich über das Windows-Startmenü zu starten. Über ~ 30 Minuten erhielt ich die folgenden Effekte:

  • Anwendungen mit einer GUI werden nicht mehr angezeigt.
  • Ich kann weiterhin GUI-Anwendungen verwenden, die bereits geöffnet sind
  • Ich kann Nicht-GUI / Konsolenanwendungen (wie cmd) öffnen .
  • An der Eingabeaufforderung kann ich sehen, dass die GUI-Anwendungen gestartet werden tasklist

Hier ist ein Beispiel:

>tasklist | find "taskmgr" taskmgr.exe 4352 Console 1 7.216 K taskmgr.exe 7824 Console 1 7.216 K taskmgr.exe 7232 Console 1 7.232 K 

Wie Sie sich vorstellen können, habe ich versucht, den Task-Manager zu starten, um das Problem dreimal zu diagnostizieren. Keines der Task-Manager-Fenster wurde jedoch sichtbar.

Unter der Annahme, dass tasklistdie Prozesse in der Reihenfolge angezeigt werden, in der sie gestartet wurden, habe ich das Problem grob identifiziert:

... openAgent.exe 7012 Console 1 592.440 K Not Responding ... WerFault.exe 3592 Console 1 10.112 K Unknown ... 

openAgentist eine Anwendung, die ich geschlossen habe (oder zumindest versucht habe zu schließen, da sie immer noch zu laufen scheint). Irgendetwas muss aufgrund des Vorhandenseins von abgestürzt sein WerFault, aber ich konnte kein Windows-Dialogfeld für die Fehlerberichterstattung sehen.

Nach Beendigung der openAgentAnwendung mit Gewalt wurden taskkill /pid 7012 /fplötzlich alle Anwendungen angezeigt, die ich zu starten versuchte.

Im Windows-Fehlerberichterstellungsdialogfeld wird jetzt eine Ausnahme 80000003angezeigt, bei der es sich um einen (Debug-) Haltepunkt handelt.

Was ist hier passiert? Ich möchte die Situation aus Sicht von Windows Internals verstehen. Theoretisch würde ich erwarten, dass der Absturz einer Anwendung im Benutzermodus andere Anwendungen nicht beeinflussen kann.

Leider habe ich weder einen Kernel-Dump der Situation noch einen Benutzermodus-Crash-Dump. openAgentDies sind also alle Informationen, die ich Ihnen geben kann.

Mein System ist Windows 7 SP1 x64 Enterprise, keine ausstehenden Windows-Updates, Intel Core i7-CPU. openAgentist eine ausführbare Datei von SilkTest von MicroFocus, einem Testautomatisierungswerkzeug.

1
Sie haben nicht genügend Informationen angegeben, um zu erklären, was passiert. Ramhound vor 8 Jahren 1

1 Antwort auf die Frage

0
Thomas Weller

Ich konnte das Problem noch einmal reproduzieren und es stellt sich heraus, dass openAgentein Hook installiert wird, das OsHookDll_x86von derselben Firma aufgerufen wird .

Dieser Haken gilt für DispatchHookW():

2:010> k ... 0049f2b0 75a86381 OsHookDll_x86!GetMessageHook+0x37 0049f2cc 75a780a9 USER32!DispatchHookW+0x38 ... 0049f544 5eff5709 USER32!PeekMessageW+0x108 

was die Windows-Nachrichtenschleife beeinflusst. Die Windows-Nachrichtenschleife wird von jeder GUI-Anwendung zum Ausführen benötigt.

Der Hook sendet Windows Messages an openAgentvia USER32!SendMessageW(), openAgentwurde aber von Windows Error Reporting ( WerFault) angehalten und kann diese Nachrichten daher nicht verarbeiten, was zu einem Timeout führt:

1:009> k ChildEBP RetAddr  00138f90 75a79886 USER32!NtUserMessageCall+0x15 00138fcc 75a797f3 USER32!SendMessageTimeoutWorker+0xa6 00138ff4 59d6066c USER32!SendMessageTimeoutW+0x21 ... 

Ich konnte den Rest nicht vollständig analysieren, da während meiner Debug-Sitzung auch alles andere zu frieren begann. Ich gehe davon aus, dass der Hook versucht, die Nachricht erneut zu senden, anstatt zurückzukehren, was zu einer Endlosschleife führt.

!analyze -vfunktionierte wegen fehlender Symbole für nichtntdll .