Seite 1 von 1

Absturz des Programms durch Deadlock

Verfasst: 13. August 2008 19:12
von KartoffelKiffer
Hallo,

ich versuche mich gerade mit QXmlQuery anzufreunden.

Dabei nutze ich die Funktion xQuery.evaluateTo(m_List), welche mir alle Strings, die aus der Query-Anweisung zurückgegeben werden, in eine QStringList* anfügt.

Durch ettliche Minuten Debugging bin ich in der Datei qeventloop.cpp in Zeile 127 angekommen. Dort wird mir eine Fehlermeldung QMutex::lock: Deadlock detected in thread 3448 angezeigt. Die Zeile beinhaltet folgende Anweisung: "return d->threadData->eventDispatcher->processEvents(flags)".

Dabei gibt mir die Debug-Ausgabe noch folgendes wieder: "ASSERT: "r->d_func()->postedEvents >=0" in file .\kernel\qcoreapplication.cpp, line 1164".

Ich kann leider überhaupt nichts damit anfangen. Die Doku sagt noch folgendes aus: "If target is null, the behavior is undefined.". Wobei target mein Zeiger auf die QStringList ist.

Wodurch kann diese Fehlermeldung überhaupt entstehen?



Mfg KK

Verfasst: 13. August 2008 21:19
von Christian81
Da hilft wohl entweder debuggen oder ein minimales Testcase bauen damit wir es reproduzieren können.

Verfasst: 14. August 2008 10:17
von KartoffelKiffer
Hallo Christian,

eigentlich gut, doch freuen tu ich mich nicht: Die Testapplikation läuft.

Habe ein Mini-Programm geschrieben, dass die Query setzt und auch genau dasselbe Xml verwendet. Die Daten schreibe ich mir dann in eine QStringList und gebe sie aus.

Ge-debuggt habe ich ja schon, und bin wie gesagt zu der Zeile 127 der Datei qeventloop.cpp gelangt. Dort springt er mir mit einer Fehlermeldung raus.

Doch anfangen kann ich damit überhaupt nichts.

Was kann denn passiert sein, dass die Event-Loop nicht mehr korrekt funktioniert?



Mfg KK

Verfasst: 14. August 2008 18:04
von KartoffelKiffer
Hallo,

kurz und knapp: Die Reihenfolge der deletes in einem Destruktor war falsch.

Somit war das Verhalten unvorhersehbar, und irgendwie bin ich dann in die eventloop geraten.

Danke für die Hilfe.




Mfg KK