Vor kurzem haben zwei Benutzer unserer Software von demselben Unternehmen zufällige Schließungen erfahren (keine Fehlermeldungen, Absturzdialoge, Beenden von Dialogen usw.). Wir konnten das, was die beiden Systeme gemeinsam hatten, auf eine bestimmte Software beschränken (einen mobilen Breitband-Gerätemanager). Wenn diese Software ausgeführt wird, schließt unsere Software nach dem Zufallsprinzip innerhalb von ca. 2 Minuten. Wenn wir den Breitband-Manager verlassen, läuft unsere Software unbegrenzt ohne Probleme.
Ich kann mir keinen Grund vorstellen, warum es eine Interaktion zwischen unserer Software und ihren geben würde. Auf das Netzwerk wird von unserer Software nicht zugegriffen und das Breitbandmodem ist in keinem Fall eingesteckt.
Wir haben eine Lösung für den Kunden bereitgestellt (führen Sie unsere Software als Administrator aus oder beenden Sie den mobilen Breitband-Manager, bevor Sie unsere Software ausführen), aber wir möchten das Problem lösen, damit Sie sich nicht darum kümmern müssen.
Ich habe einen Remote-Debugger an unsere Software angeschlossen, aber ich war mir nicht sicher, wo ich genau hinschauen sollte, um zu sehen, wie unsere Software abstürzt. Das Debugging endet mit dem Beendigungscode 0, wenn unser Prozess beendet ist.
Meine Frage ist, wie kann ich untersuchen, wie / warum ein Win32-Prozess getötet wird und was kann ich tun, um es zu verhindern?
Bearbeiten: Ich habe den Breitband-Manager und die DLLs, die er benutzt, in einem Hex-Editor geöffnet und verweist dort auf eine ausführbare Datei mit genau dem gleichen Namen wie unsere. Also ich denke, das ist der Link. Das Umbenennen unserer ausführbaren Datei behebt das Problem für unsere Benutzer, aber leider nicht die Dummheit des Sprint SmartView.
Bearbeiten : Um dem seltenen anderen Entwickler zu helfen: Wenn Ihre ausführbare Datei den Namen phoenix.exe
hat und Ihre Endbenutzer Sprint SmartView ausführen, stirbt Ihr Programm zufällig ab. Wenn Sie Ihre ausführbare Datei umbenennen, wird dies behoben (oder Sie verbringen mehrere Monate Ihres Lebens damit, herauszufinden, wen Sie bei Sprint benachrichtigen müssen, damit dies wirklich gelöst wird). Die Datei, die phoenix.exe
spezifisch erwähnt, ist WwanCoreSdk.dll
.
Wenn Ihre App 32 Bit umfasst, versuchen Sie WinAPIOverride32 . Es zeigt Ihnen alle syscalls, die vom Programm ausgeführt werden. Wenn Sie also in der Lage sind, Ihr Programm in der Protokolldatei des genannten Managers zeitgesteuert zu löschen, sollte es einfacher sein zu erklären, warum es passiert.