Pregunta

Una llamada para borrar en un QByteArray genera la siguiente excepción:

* glibc detectado * / home / yan / FPS2 / FPS2: doble liberación o corrupción (fasttop):

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

Es esto un error qt o podría tener algo que ver con mi código? Sé QObjects enviaban seguro para hilos (definición del intervalo QT no varios subprocesos llamando a la misma función de la misma instancia de objeto) pero mi función tiene mutex. También muy raramente sale este error a pesar de que la misma función se llama con frecuencia. PD Una manera de prevenir esto es env var MALLOC_CHECK_ 0

Esta dirección de Internet se refiere a un problema similar y algunos puestos parece implicar su causado por una versión incompatible de glibc.

*** *** glibc detecta Perl: doble libre o la corrupción (ant): 0x0c2b7138 ***

¿Fue útil?

Solución 2

esto es causado por el hecho de es multiproceso la de la aplicación, el objeto pertenece en el TrenzadoPrincipal pero se utiliza en otro hilo, a pesar de que solía mutexes en el QByteArray la UDPsocket que lo utiliza para hacer readDatagram también está en el TrenzadoPrincipal. ..y sí, necesito que udpSocket para estar en el hilo principal, así

Otros consejos

Podría ser una serie de cosas diferentes, incluyendo referencia a un QByteArray temporal devuelto por una llamada de función, pero es poco probable (OMI) a un error en Qt.

Aquí hay algunas ideas para la depuración:

  • ejecutar el programa bajo Valgrind y ver si se va a poner de relieve el problema
  • ejecutar la aplicación en contra de una versión de Qt que tiene símbolos de depuración disponibles para ello
  • enable volcados de memoria y ver si le da un archivo de núcleo

Dudo mucho que haya encontrado un error en qt. Ese error puede ocurrir por varias razones, pero los medios esenciales que tener una referencia a la memoria que ya se ha liberado. Ejecutar a través de los depuradores y tratar de ver lo que está causando el problema. Uso del BGF y valgrind y es de esperar que pueda localizar el problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top