Seite 1 von 1

Returncode bei Programmabsturz

Verfasst: 1. September 2015 13:20
von Tilman Räger
Hallo,

mein Programm hat die unangenehme Eigenschaft, beim Kunden des öfteren abzustürzen - bei mir allerdings nie! Betriebssystem ist Windows 7 (32bit). Compiler VC 2010
Jetzt hat mir der Kunde ein Protokoll zur Verfügung gestellt, das die Returncodes des Programmes mitschreibt. Mit ein paar Ausnahmen erhalte ich bei allen Abstürzen den Wert -1073741502 (hex. C0000142) - lt Microsoft eine Hinweis, das er eine Dll nicht korrekt initialisieren konnte. Gibt es irgendwo eine Aufstellung, was für Fehlercodes Qt bei Programminternen Problemen sendet (also wenn Qt wegen interner Probleme abschmiert) oder bekommt man generell einen Returncode 0, wenn nicht vom Betriebssystem oder vom Programmcode direkt ein abweichender Returncode generiert wird?

Gruss
Tilman (Räger)

Re: Returncode bei Programmabsturz

Verfasst: 1. September 2015 17:48
von Christian81
Da dies ein Windows-Fehlercode ist wird dir Qt nicht weiterhelfen.
Und bei fehlenden Dlls wie immer -> Dependency Walker

Re: Returncode bei Programmabsturz

Verfasst: 7. September 2015 12:34
von RHBaum
Wenn es wirklich am "korrekt initialisieren" einer dll liegen sollte ....
Würde er, wenn er feste abhaengigkeiten hat, beim laden schon abschmieren ...
beim Kunden des öfteren abzustürzen
klingt aber eher nach Abstürzen die im Betrieb auftreten ?
ist das korrekt ?

"richtig dynamisch" geladene Dlls, also über loadlibray und co, koennen natürlich irgendwann mitten im betrieb beim dynamischen laden fehler liefern .... diese "Abhängigkeit" wird man aber IMHO nicht im Dependency Walker sehen.

sollt es wirklich über das dynamische laden kommen, einfach mal die errorwerte aller eigenen loadlibrary aufrufe loggen.
sollt es wirklich nen Problem von den statischen geladenen Qt dlls liegen, hasst kaum ne chance da mehr über dein Prog zu machen, da die dlls vor der main geladen werden ...
WObei qt dlls auch andere Dlls dynamisch anziehen könnten .... Hauptverdächtige sind dann alle pluginähnlich arbeitenden Module, also sowas wie Icons, SQL anbindungen, Sound, ....

Auf alle Fälle solltest es erstmal nachvollziehbar rekonstruieren können ...

Ciao ...

Re: Returncode bei Programmabsturz

Verfasst: 9. September 2015 17:19
von bobcat
Könnte eine race condition die Ursache sein?

Ich hatte mal eine ähnliche Situation: Auf meinem Entwicklungsrechner lief meine Software, auf dem Produktivrechner nicht. Der Grund war, dass die zeitliche Abfolge, in der meine QWidgets erstellt wurden, nicht explizit festgelegt war. Es konnte also zu Zugriffen auf ein QWidget kommen, dass noch nicht instanziiert war.

Das zu rekonstruieren ist nicht einfach möglich. Du könntest mitloggen, ob alle Objekte da sind. Oder Deinen Programmablauf nochmal kritisch durchdenken.

Re: Returncode bei Programmabsturz

Verfasst: 30. September 2015 10:37
von Tilman Räger
Hallo,

bin wegen Urlaub und Arbeit an anderen Projekten bisher nicht zum Antworten gekommen, deswegen etwas verspätet.
zu den bisherigen Antworten und aufgeworfenen Fragen:
Da dies ein Windows-Fehlercode ist wird dir Qt nicht weiterhelfen.
Und bei fehlenden Dlls wie immer -> Dependency Walker


Das mir Qt-Doku nicht bei Windows-Fehlercodes weiterhilft, ist schon klar. Meine Frage ging eher in die Richtung, was gibt Qt selber für Fehlercodes zurück, wenn eine Anwendung baden geht (ohne Beteiligung des Betriebssystems). Gibt es hier irgendwelche Standardwerte oder Dokus?

klingt aber eher nach Abstürzen die im Betrieb auftreten ?
ist das korrekt ?
Ja. Die Abstürze kommen im laufenden Betrieb. Seltsamerweise allerdings nur bei einer Kundeninstallation - alle anderen Installationen laufen anscheinend ohne Abstürze (zumindest habe ich nichts gegenteiliges bisher gehört). Das war ja auch der Grund, warum mir die Theorie mit der DLL so plausibel erschien.
Könnte eine race condition die Ursache sein?
Wäre natürlich nicht unmöglich - ich werde es auf jeden Fall mal im Hinterkopf behalten. Allerdings haben die Abstürze nichts mit irgendwelchen Dialogen zu tun. In den Logfiles hat man eher das Gefühl, das Programm ist fleißig am Däumchendrehen und auf einmal ist ein Neustart fällig. Ich werde mir aber auf jeden fall noch einmal die Threads des Programms vornehmen, ob es da zu irgendwelchen Problemen kommen kann.

Gruß und nocheinmal Danke für die Tips

Tilman (Räger)