Ошибка памяти Qt — нужна помощь в анализе трассировки valgrind

Есть ли у вас теория, как отладить этот потенциально проблемный шаблон доступа к памяти? У меня есть предчувствие, что это может быть связано с определенной ошибкой гейзена, которую я испытываю, но я не могу точно определить это.

это фрагмент прогона отладочной сборки под Valgrind, с --track-origins=yes, --leak-check=full

Как я мог неправильно использовать библиотеку Qt Gui, чтобы она проявлялась следующим образом?

==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==

1

Решение

Проверьте переменные, на которые вы ссылаетесь в main.cpp: 8 и sysapplication.cpp: 55. Если вы виноваты, то здесь используется одна из переменных.

Кроме того, проверить Неинициализированное значение было создано выделением стека в QWidget :: setVisible — Вы когда-нибудь вызывали setVisible? Если так, каково значение параметра?

Важное примечание: Valgrind будет отслеживать память, которая копируется вокруг. Если у вас есть:

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

тогда Valgrind выдаст эту ошибку в строке 4, даже если строка 1 является источником ошибки.

Также возможно, что Qt не может что-то инициализировать. Множество библиотек выдают много тревожных ошибок при работе под Valgrind.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]