Heim  >  Artikel  >  Backend-Entwicklung  >  Die Windows-Rechneranwendung stürzt aufgrund einer WerFault-Inkonsistenz ab, wenn sie von einem Dienst mit CreateProcessAsUserW() gestartet wird.

Die Windows-Rechneranwendung stürzt aufgrund einer WerFault-Inkonsistenz ab, wenn sie von einem Dienst mit CreateProcessAsUserW() gestartet wird.

PHPz
PHPznach vorne
2024-02-05 22:51:071156Durchsuche

使用 CreateProcessAsUserW() 从服务启动时,Windows 计算器应用程序会因 WerFault 不一致而崩溃

Frageninhalt

Der Windows-Dienst ist in Go geschrieben und versucht mit CreateProcessAsUserW() einen Rechnerprozess im Benutzerkontext zu erstellen.

Sein Code ist von diesem Kern inspiriert:

https://gist.github.com/LiamHaworth/1ac37f7fb6018293fc43f86993db24fc#file-native-go

Meistens wird die Rechner-App beim aktiven Benutzer gestartet. Manchmal startet die App jedoch nicht, ohne dass ein Fehler zurückgegeben wird. CreateProcessAsUserW()

Eine Untersuchung mit Procmon ergab, dass die Anwendung beim Starten der Rechneranwendung abstürzte und auf das Sammeln von WerFault-Dumps zurückgriff. Leider sehe ich im Ereignisprotokoll keinen detaillierten Dump.

WerFault-Absturz in ProcMon beobachtet

Detaillierte Stack-Traces zum Starten von drei ähnlichen Taschenrechner-Apps mit – die ersten beiden waren erfolgreich, die dritte fehlgeschlagenCreateProcessAsUserW

Dieser Fehler ist zufälliger Natur und macht die Anwendung nicht zuverlässig. Ich habe keine Ahnung, was/wie ich von hier aus debuggen soll, und würde mich wirklich über jede Hilfe freuen.


Richtige Antwort


Der Fehler scheint auf eine falsche Kompilierungsumgebung zurückzuführen zu sein, in der mit x64 erstellte Binärdateien auf arm64 ausgeführt werden. Vielen Dank für jeden Beitrag

Das obige ist der detaillierte Inhalt vonDie Windows-Rechneranwendung stürzt aufgrund einer WerFault-Inkonsistenz ab, wenn sie von einem Dienst mit CreateProcessAsUserW() gestartet wird.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen