*** glibc détecté *** double gratuit ou la corruption (fasttop):

Un appel clair sur un QByteArray génère l'exception suivante:

* glibc détecté * /home/yan/FPS2/FPS2: double gratuit ou la corruption (fasttop):

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

est-ce un bug de qt ou pourrait-il avoir quelque chose à voir avec mon code? Je sais QObjects ne sont pas thread-safe (QT définition, pas plusieurs threads d'appeler la même fonction, de la même instance d'objet), mais ma fonction a mutex. Aussi, j'ai très rarement vous obtenez cette erreur, même si la même fonction est appelée fréquemment. P. S. Une façon d'éviter cela est d'env var MALLOC_CHECK_ 0

cette url se rapporte à un problème similaire et certains postes semble impliquer sa causée par une incompatibilité de version de la glibc.

*** glibc détecté *** perl: double gratuit ou la corruption (!prev): 0x0c2b7138 ***

Les trois dernières questions que vous avez posté semblent être les symptômes d'une mauvaise synchronisation entre les threads. Je ne pense pas que votre FPSengine classe est thread-safe, mais il n'y a pas suffisamment de données pour fournir une réponse.
bien j'ai fait un test en ne permettant à la personne de la qthreads et bien sûr le mainthread est toujours là. Aussi le thread principal ne rien faire et à la fonction qui est appelée à partir de la qthread a un mutex de verrouillage sur la première instruction et de déverrouillage sur la dernière instruction. De ce que je peux voir à partir de la lecture du code de QByteArray.cpp et de la documentation de Qt sur implicitement partagé les classes de ce qui semble être un problème de déréférencement. Maintenant, je suis en train de voir comment la synchronisation des threads sa impliqués
Double Possible de Comment traquer un "double gratuit ou de corruption" erreur

OriginalL'auteur yan bellavance | 2010-02-04