Frage

Ein Anruf auf einer QByteArray löschen erzeugt die folgende Ausnahme:

* glibc erkannt * / home / yan / FPS2 / FPS2: Doppel frei oder Korruption (fasttop):

0 ?? 1 ??
2 kostenlos
3 QByteArray :: clear ()
4 FPSengine :: getDatagrams
5 FPSengine :: xmitData
6 FPSengine :: getData
7 threadDatalog :: run
8 ??
9 start_thread
10 Klon
11 ?? 0

ist dies ein qt Fehler oder könnte es etwas mit meinem Code zu tun? Ich weiß QObjects Thread-sicher (QT Definition nicht mehrere Threads die gleiche Funktion des gleichen Objektinstanz aufrufen) Arent aber meine Funktion hat mutexes. Ich habe auch sehr selten diese Fehlermeldung erhalten, obwohl die gleiche Funktion häufig genannt wird. P. S. Eine Möglichkeit, dies zu verhindern, ist zu env var MALLOC_CHECK_ 0

Diese URL bezieht sich ein ähnliches Problem und einige Beiträge scheint seine von einer inkompatiblen Version von glibc verursacht zu implizieren.

*** glibc erkannt *** perl: Doppel kostenlos oder Korruption (i!): 0x0c2b7138 ***

War es hilfreich?

Lösung 2

dies durch die Tatsache verursacht wird, die die Anwendung multithreaded, gehört das Objekt in dem Mainthread, sondern in einem anderen Thread verwendet, obwohl ich mutexes auf der QByteArray die UDPSocket verwendet, die es readDatagram ist auch in dem Mainthread zu tun verwendet. ..und ja, ich brauche das UDPSocket als auch im Hauptthread sein

Andere Tipps

Es könnte eine Reihe von verschiedenen Dingen, einschließlich Verweisen auf eine temporäre QByteArray durch einen Funktionsaufruf zurückgegeben, aber es ist unwahrscheinlich (IMO) ein Fehler in Qt sein.

Hier ein paar Gedanken zum Debuggen von:

  • unter Valgrind und sehen, ob es das Problem
  • wird Highlight
  • führen Sie Ihre Anwendung mit einer Version von Qt, die Debug-Symbole für sie hat
  • enable Core-Dumps und sehen, ob Sie eine Core-Datei bekommen

Ich bezweifle, dass Sie sehr einen Fehler in qt gefunden haben. Dieser Fehler kann für eine Reihe von Gründen auftreten, aber wesentliche Mittel Sie einen Verweis auf Speicher haben, der bereits freigegeben wurde. Führen Sie durch Debugger und versuchen und sehen, was das Problem verursacht. Verwenden Sie gdb und valgrind und hoffentlich können Sie das Problem ausfindig zu machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top