Maison >développement back-end >Golang >L'application Calculatrice Windows se bloque en raison d'une incohérence WerFault lors du lancement à partir d'un service utilisant CreateProcessAsUserW()

L'application Calculatrice Windows se bloque en raison d'une incohérence WerFault lors du lancement à partir d'un service utilisant CreateProcessAsUserW()

PHPz
PHPzavant
2024-02-05 22:51:071228parcourir

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

Contenu de la question

Le service Windows est écrit en Go et tente de créer un processus de calculatrice dans le contexte utilisateur en utilisant CreateProcessAsUserW().

Son code s'inspire de l'essentiel :

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

La plupart du temps, l'application de calculatrice se lance chez l'utilisateur actif ; cependant, parfois l'application ne parvient pas à se lancer sans CreateProcessAsUserW() renvoyer une erreur.

L'inspection à l'aide de Procmon a révélé qu'au lancement de l'application Calculatrice, l'application s'est écrasée et a eu recours à la collecte des dumps WerFault. Malheureusement, je ne vois pas de dump détaillé dans le journal des événements.

Crash WerFault observé dans ProcMon

Traces de pile détaillées pour le lancement de 3 applications de calculatrice similaires à l'aide de CreateProcessAsUserW - les deux premières ont réussi, la troisième a échoué

Cette erreur est de nature aléatoire, ce qui ne rend pas l'application fiable. Je n'ai aucune idée de quoi/comment déboguer à partir d'ici et j'apprécierais vraiment toute aide.


Bonne réponse


L'erreur semble se produire en raison d'un mauvais environnement de compilation où les binaires créés avec x64 sont exécutés sur arm64. Merci pour la contribution de tous

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer