Russian Qt Forum
Май 14, 2024, 14:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ругается Valgrind на очевидные вещи, а есть ли утечка?  (Прочитано 1668 раз)
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« : Март 28, 2014, 11:52 »

Решил прогнать программу через Valgrind. И удивился, когда увидел, что он ругается на такие участки кода
Код:
void UnlinkedItemsDialog::on_scanMatchObjectsButton_clicked()
{
    SelectStorageDialog     selectDlg(this);
    QList<CRailObjectStorage*>  storages = fstorageManager->storageMap().values();
    qSort(storages.begin(),storages.end(),CRailObjectStorage::lessThanId);
    selectDlg.setStorages(storages);
    if(selectDlg.exec()==QDialog::Accepted) //<<< ругается на эту строчку ( и подобные вызовы QDialog::exec() созданных в стеке диалогов)
    {
        fmodel.setStoragesToScan(selectDlg.selectedStorages());
        fmodel.checkForProbableLinkage();
    }
}

Цитировать
576 bytes in 16 blocks are definitely lost in loss record 8,943 of 9,454
  в UnlinkedItemsDialog::on_scanMatchObjectsButton_clicked() в extensions/logic/editor/dialogs/unlinkeditemsdialog.cpp:259
  1: malloc в /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so
  2: /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
  3: /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
  4: /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
  5: /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
  6: xcb_flush в /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
  7: 0xc917dd9
  8: 0xc91811f
  9: QBackingStore::flush(QRegion const&amp;, QWindow*, QPoint const&amp;) в /opt/Qt/5.2.0/gcc_64/lib/libQt5Gui.so.5.2.0
  10: /opt/Qt/5.2.0/gcc_64/lib/libQt5Widgets.so.5.2.0
  11: /opt/Qt/5.2.0/gcc_64/lib/libQt5Widgets.so.5.2.0
  12: QWidgetPrivate::syncBackingStore() в /opt/Qt/5.2.0/gcc_64/lib/libQt5Widgets.so.5.2.0
  13: QWidget::event(QEvent*) в /opt/Qt/5.2.0/gcc_64/lib/libQt5Widgets.so.5.2.0
  14: QApplicationPrivate::notify_helper(QObject*, QEvent*) в /opt/Qt/5.2.0/gcc_64/lib/libQt5Widgets.so.5.2.0
  15: QApplication::notify(QObject*, QEvent*) в /opt/Qt/5.2.0/gcc_64/lib/libQt5Widgets.so.5.2.0
  16: QCoreApplication::notifyInternal(QObject*, QEvent*) в /opt/Qt/5.2.0/gcc_64/lib/libQt5Core.so.5.2.0
  17: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) в /opt/Qt/5.2.0/gcc_64/lib/libQt5Core.so.5.2.0
  18: /opt/Qt/5.2.0/gcc_64/lib/libQt5Core.so.5.2.0
  19: g_main_context_dispatch в /lib/x86_64-linux-gnu/libglib-2.0.so.0.3800.1
  20: /lib/x86_64-linux-gnu/libglib-2.0.so.0.3800.1
  21: g_main_context_iteration в /lib/x86_64-linux-gnu/libglib-2.0.so.0.3800.1
  22: QEventDispatcherGlib::processEvents(QFlags&lt;QEventLoop::ProcessEventsFlag&gt;) в /opt/Qt/5.2.0/gcc_64/lib/libQt5Core.so.5.2.0
  23: QEventLoop::exec(QFlags&lt;QEventLoop::ProcessEventsFlag&gt;) в /opt/Qt/5.2.0/gcc_64/lib/libQt5Core.so.5.2.0
  24: QDialog::exec() в /opt/Qt/5.2.0/gcc_64/lib/libQt5Widgets.so.5.2.0
  25: UnlinkedItemsDialog::on_scanMatchObjectsButton_clicked() в <a href="file:///..../editor/dialogs/unlinkeditemsdialog.cpp:259" >extensions/logic/editor/dialogs/unlinkeditemsdialog.cpp:259</a>

Хм, казалось бы диалог должен уничтожиться после выхода из функции слота. Или я чего то не понимаю. И в программе находит несколько таких мест, хотя суть одна - при вызове метода exec() диалога, который создан в стеке - говорит что память течет. Разъясните, может я что то упустил из вида. Хотя скажу, что очень много течи находит во внутренних либах и либах Qt.
« Последнее редактирование: Март 28, 2014, 11:54 от Fregloin » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 23.