/ / Qt error de memoria - se necesita ayuda para el análisis de seguimiento de valgrind - c ++, qt, valgrind, qtgui, memcheck

Error de memoria Qt - se necesita ayuda con el análisis de rastreo de valgrind - c ++, qt, valgrind, qtgui, memcheck

¿Tiene alguna teoría sobre cómo depurar este patrón de acceso a memoria potencialmente problemático? Tengo el presentimiento de que podría estar relacionado con un cierto error de heisen que estoy experimentando, pero parece que no puedo precisarlo.

es un fragmento de una ejecución de compilación de depuración, bajo valgrind, con --track-origins=yes, --leak-check=full

¿Cómo podría estar haciendo mal uso de la Gui lib de Qt para que se manifieste de la siguiente manera?

==15169== Conditional jump or move depends on uninitialised value(s)
==15169==    at 0x99CD8AA: XSetCommand (in /usr/lib64/libX11.so.6.3.0)
==15169==    by 0x99D1FFE: XSetWMProperties (in /usr/lib64/libX11.so.6.3.0)
==15169==    by 0x7280853: QWidgetPrivate::create_sys(unsigned long, bool, bool) (in /usr/lib64/qt4/libQtGui.so.4.8.3)
==15169==    by 0x723550F: QWidget::create(unsigned long, bool, bool) (in /usr/lib64/qt4/libQtGui.so.4.8.3)
==15169==    by 0x723F3E1: QWidget::setVisible(bool) (in /usr/lib64/qt4/libQtGui.so.4.8.3)
==15169==    by 0x40DFE5: QWidget::show() (qwidget.h:494)
==15169==    by 0x40DA5D: SYSApplication::on_start() (sysapplication.cpp:55)
==15169==    by 0x40D5BC: main (main.cpp:8)
==15169==  Uninitialised value was created by a stack allocation
==15169==    at 0x723F0E0: QWidget::setVisible(bool) (in /usr/lib64/qt4/libQtGui.so.4.8.3)
==15169==

Respuestas

0 para la respuesta № 1

Compruebe qué variables tiene su referencia en main.cpp: 8 y sysapplication.cpp: 55. Si tiene la culpa, entonces una de las variables en uso aquí tiene la culpa.

Además, echa un vistazo El valor no inicializado fue creado por una asignación de pila en QWidget :: setVisible - ¿Alguna vez llamaste a setVisible? Si es así, ¿cuál es el valor del parámetro?

Nota importante: Valgrind hará un seguimiento de la memoria que se copia. Si usted tiene:

int i;       // 1
int j = i;   // 2
int k = j;   // 3
if (k) {}    // 4

entonces Valgrind arrojará este error en la línea 4 aunque la línea 1 esté en la fuente del error.

También es posible que Qt no pueda inicializar algo. Muchas bibliotecas arrojan muchos errores preocupantes cuando se ejecutan bajo Valgrind.