Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
5.12
-
None
-
Ubuntu 18.04
gcc (Ubuntu 8.4.0-1ubuntu1~18.04) 8.4.0
Qt 5.12.7
Description
I'm using QCharts to draw bar charts and line charts which are frequently updated.
Doing this my application consumes memory. Therefore I used valgrind to search for memory leaks and got lots of definitly, possibly and indirect losts in QCharts. Have al ook at the valgrind log file (sorry attachents don't work. Therefore I paste pars of the text.):
==11876== 1,008 bytes in 9 blocks are indirectly lost in loss record 9,566 of 10,780
==11876== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==11876== by 0x7FA6161: QBrush::detach(Qt::BrushStyle) (qbrush.cpp:625)
==11876== by 0x7FA64B5: QBrush::setColor(QColor const&) (qbrush.cpp:728)
==11876== by 0x7FA698F: QBrush::QBrush(QColor const&, Qt::BrushStyle) (qbrush.cpp:478)
==11876== by 0x7E18563: QPalette::setBrush(QPalette::ColorGroup, QPalette::ColorRole, QBrush const&) (qpalette.cpp:810)
==11876== by 0x7E184D4: QPalette::setBrush(QPalette::ColorGroup, QPalette::ColorRole, QBrush const&) (qpalette.cpp:775)
==11876== by 0x787C133: setColor (qpalette.h:197)
==11876== by 0x787C133: setColor (qpalette.h:199)
==11876== by 0x787C133: QGraphicsTextItem::setDefaultTextColor(QColor const&) (qgraphicsitem.cpp:10102)
==11876== by 0x713EE41: QtCharts::ChartPresenter::setTitleBrush(QBrush const&) (chartpresenter.cpp:378)
==11876== by 0x7142341: QtCharts::ChartThemeManager::decorateChart(QtCharts::QChart*, QtCharts::ChartTheme*) const (chartthememanager.cpp:106)
==11876== by 0x71435F8: QtCharts::ChartThemeManager::setTheme(QtCharts::QChart::ChartTheme) (chartthememanager.cpp:84)
==11876== by 0x714806E: QtCharts::QChartPrivate::init() (qchart.cpp:898)
==11876== by 0x7149568: QtCharts::QChartViewPrivate::QChartViewPrivate(QtCharts::QChartView*, QtCharts::QChart*) (qchartview.cpp:291)
==11876==
==11876== 1,032 bytes in 3 blocks are indirectly lost in loss record 9,594 of 10,780
==11876== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==11876== by 0x7780037: QWidgetTextControl::QWidgetTextControl(QObject*) (qwidgettextcontrol.cpp:866)
==11876== by 0x787BD66: QGraphicsTextItemPrivate::textControl() const (qgraphicsitem.cpp:10594)
==11876== by 0x787C05C: QGraphicsTextItem::document() const (qgraphicsitem.cpp:10260)
==11876== by 0x714BFE3: QtCharts::ChartTitle::ChartTitle(QGraphicsItem*) (charttitle.cpp:42)
==11876== by 0x713EB43: QtCharts::ChartPresenter::createTitleItem() (chartpresenter.cpp:266)
==11876== by 0x713EDD0: QtCharts::ChartPresenter::setTitleFont(QFont const&) (chartpresenter.cpp:363)
==11876== by 0x7142322: QtCharts::ChartThemeManager::decorateChart(QtCharts::QChart*, QtCharts::ChartTheme*) const (chartthememanager.cpp:105)
==11876== by 0x71435F8: QtCharts::ChartThemeManager::setTheme(QtCharts::QChart::ChartTheme) (chartthememanager.cpp:84)
==11876== by 0x714806E: QtCharts::QChartPrivate::init() (qchart.cpp:898)
==11876== by 0x7149568: QtCharts::QChartViewPrivate::QChartViewPrivate(QtCharts::QChartView*, QtCharts::QChart*) (qchartview.cpp:291)
==11876== by 0x71495BF: QtCharts::QChartView::QChartView(QWidget*) (qchartview.cpp:75)
==11876==
==11876== 1,144 bytes in 1 blocks are possibly lost in loss record 9,678 of 10,780
==11876== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==11876== by 0x7ECA80B: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase.cpp:2778)
==11876== by 0x7EA15F9: QFontPrivate::engineForScript(int) const (qfont.cpp:217)
==11876== by 0x7ECF798: QScriptLine::setDefaultHeight(QTextEngine*) (qtextengine.cpp:2809)
==11876== by 0x7EE568D: QTextLine::layout_helper(int) (qtextlayout.cpp:1796)
==11876== by 0x7EE7AAA: QTextLine::setLineWidth(double) (qtextlayout.cpp:1596)
==11876== by 0x7F262FC: QTextDocumentLayoutPrivate::layoutBlock(QTextBlock const&, int, QTextBlockFormat const&, QTextLayoutStruct*, int, int, QTextBlockFormat const*) (qtextdocumentlayout.cpp:2659)
==11876== by 0x7F27637: QTextDocumentLayoutPrivate::layoutFlow(QTextFrame::iterator, QTextLayoutStruct*, int, int, QFixed) (qtextdocumentlayout.cpp:2439)
==11876== by 0x7F2D3DE: QTextDocumentLayoutPrivate::layoutFrame(QTextFrame*, int, int, QFixed, QFixed, QFixed) (qtextdocumentlayout.cpp:2180)
==11876== by 0x7F2D89B: QTextDocumentLayoutPrivate::layoutFrame(QTextFrame*, int, int, QFixed) (qtextdocumentlayout.cpp:2070)
==11876== by 0x7F2DAB7: QTextDocumentLayout::doLayout(int, int, int) (qtextdocumentlayout.cpp:2986)
==11876== by 0x7F2DB2B: QTextDocumentLayoutPrivate::ensureLayoutedByPosition(int) const [clone .part.131] (qtextdocumentlayout.cpp:3152)
==11876==
==11876== 1,440 bytes in 3 blocks are indirectly lost in loss record 9,796 of 10,780
==11876== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==11876== by 0x7EF9BA3: QTextDocument::QTextDocument(QObject*) (qtextdocument.cpp:300)
==11876== by 0x777D1C7: QWidgetTextControlPrivate::setContent(Qt::TextFormat, QString const&, QTextDocument*) (qwidgettextcontrol.cpp:445)
==11876== by 0x777FFF1: QWidgetTextControlPrivate::init(Qt::TextFormat, QString const&, QTextDocument*) (qwidgettextcontrol.cpp:424)
==11876== by 0x7780081: QWidgetTextControl::QWidgetTextControl(QObject*) (qwidgettextcontrol.cpp:869)
==11876== by 0x787BD66: QGraphicsTextItemPrivate::textControl() const (qgraphicsitem.cpp:10594)
==11876== by 0x787C05C: QGraphicsTextItem::document() const (qgraphicsitem.cpp:10260)
==11876== by 0x714BFE3: QtCharts::ChartTitle::ChartTitle(QGraphicsItem*) (charttitle.cpp:42)
==11876== by 0x713EB43: QtCharts::ChartPresenter::createTitleItem() (chartpresenter.cpp:266)
==11876== by 0x713EDD0: QtCharts::ChartPresenter::setTitleFont(QFont const&) (chartpresenter.cpp:363)
==11876== by 0x7142322: QtCharts::ChartThemeManager::decorateChart(QtCharts::QChart*, QtCharts::ChartTheme*) const (chartthememanager.cpp:105)
==11876== by 0x71435F8: QtCharts::ChartThemeManager::setTheme(QtCharts::QChart::ChartTheme) (chartthememanager.cpp:84)
==11876==
==11876== 1,536 bytes in 3 blocks are indirectly lost in loss record 9,846 of 10,780
==11876== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==11876== by 0x87E9AAC: QArrayData::allocate(unsigned long, unsigned long, unsigned long, QFlags<QArrayData::AllocationOption>) (qarraydata.cpp:118)
==11876== by 0x89E00D6: allocate (qarraydata.h:225)
==11876== by 0x89E00D6: QVector<QObjectPrivate::ConnectionList>::reallocData(int, int, QFlags<QArrayData::AllocationOption>) (qvector.h:563)
==11876== by 0x89D9D01: resize (qvector.h:422)
==11876== by 0x89D9D01: QObjectPrivate::addConnection(int, QObjectPrivate::Connection*) (qobject.cpp:395)
==11876== by 0x89D9EF0: QMetaObjectPrivate::connect(QObject const*, int, QMetaObject const*, QObject const*, int, QMetaObject const*, int, int*) (qobject.cpp:3343)
==11876== by 0x89DD6B9: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2801)
==11876== by 0x787BDE8: QGraphicsTextItemPrivate::textControl() const (qgraphicsitem.cpp:10602)
==11876== by 0x787C05C: QGraphicsTextItem::document() const (qgraphicsitem.cpp:10260)
==11876== by 0x714BFE3: QtCharts::ChartTitle::ChartTitle(QGraphicsItem*) (charttitle.cpp:42)
==11876== by 0x713EB43: QtCharts::ChartPresenter::createTitleItem() (chartpresenter.cpp:266)
==11876== by 0x713EDD0: QtCharts::ChartPresenter::setTitleFont(QFont const&) (chartpresenter.cpp:363)
==11876== by 0x7142322: QtCharts::ChartThemeManager::decorateChart(QtCharts::QChart*, QtCharts::ChartTheme*) const (chartthememanager.cpp:105)
==11876==
==11876== 2,048 bytes in 1 blocks are possibly lost in loss record 10,030 of 10,780
==11876== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==11876== by 0x7F0DBD9: init (qfragmentmap_p.h:229)
==11876== by 0x7F0DBD9: clear (qfragmentmap_p.h:810)
==11876== by 0x7F0DBD9: QTextDocumentPrivate::clear() (qtextdocument_p.cpp:270)
==11876== by 0x7F00695: QTextDocument::clear() (qtextdocument.cpp:379)
==11876== by 0x777CF69: QWidgetTextControlPrivate::setContent(Qt::TextFormat, QString const&, QTextDocument*) (qwidgettextcontrol.cpp:502)
==11876== by 0x714C15B: QtCharts::ChartTitle::setGeometry(QRectF const&) (charttitle.cpp:64)
==11876== by 0x71D9272: QtCharts::AbstractChartLayout::calculateTitleGeometry(QRectF const&, QtCharts::ChartTitle*, bool) const (abstractchartlayout.cpp:180)
==11876== by 0x71D99AD: QtCharts::AbstractChartLayout::setGeometry(QRectF const&) (abstractchartlayout.cpp:69)
==11876== by 0x788D742: QGraphicsLayout::widgetEvent(QEvent*) (qgraphicslayout.cpp:395)
==11876== by 0x78D0BEA: QGraphicsWidget::event(QEvent*) (qgraphicswidget.cpp:1396)
==11876== by 0x75B292B: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:3700)
==11876== by 0x75B9B0F: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3446)
==11876== by 0x120BB4: (anonymous namespace)::PandoraApplication::notify(QObject*, QEvent*) (main.cpp:70)
==11876==
==11876== 4,608 bytes in 1 blocks are possibly lost in loss record 10,271 of 10,780
==11876== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==11876== by 0x7F0DC39: init (qfragmentmap_p.h:229)
==11876== by 0x7F0DC39: clear (qfragmentmap_p.h:810)
==11876== by 0x7F0DC39: QTextDocumentPrivate::clear() (qtextdocument_p.cpp:271)
==11876== by 0x7F00695: QTextDocument::clear() (qtextdocument.cpp:379)
==11876== by 0x777CF69: QWidgetTextControlPrivate::setContent(Qt::TextFormat, QString const&, QTextDocument*) (qwidgettextcontrol.cpp:502)
==11876== by 0x714C15B: QtCharts::ChartTitle::setGeometry(QRectF const&) (charttitle.cpp:64)
==11876== by 0x71D9272: QtCharts::AbstractChartLayout::calculateTitleGeometry(QRectF const&, QtCharts::ChartTitle*, bool) const (abstractchartlayout.cpp:180)
==11876== by 0x71D99AD: QtCharts::AbstractChartLayout::setGeometry(QRectF const&) (abstractchartlayout.cpp:69)
==11876== by 0x788D742: QGraphicsLayout::widgetEvent(QEvent*) (qgraphicslayout.cpp:395)
==11876== by 0x78D0BEA: QGraphicsWidget::event(QEvent*) (qgraphicswidget.cpp:1396)
==11876== by 0x75B292B: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:3700)
==11876== by 0x75B9B0F: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3446)
==11876== by 0x120BB4: (anonymous namespace)::PandoraApplication::notify(QObject*, QEvent*) (main.cpp:70)
==11876==
==11876== 6,144 bytes in 3 blocks are indirectly lost in loss record 10,358 of 10,780
==11876== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==11876== by 0x7F0DBD9: init (qfragmentmap_p.h:229)
==11876== by 0x7F0DBD9: clear (qfragmentmap_p.h:810)
==11876== by 0x7F0DBD9: QTextDocumentPrivate::clear() (qtextdocument_p.cpp:270)
==11876== by 0x7F00695: QTextDocument::clear() (qtextdocument.cpp:379)
==11876== by 0x777CF69: QWidgetTextControlPrivate::setContent(Qt::TextFormat, QString const&, QTextDocument*) (qwidgettextcontrol.cpp:502)
==11876== by 0x714C15B: QtCharts::ChartTitle::setGeometry(QRectF const&) (charttitle.cpp:64)
==11876== by 0x71D9272: QtCharts::AbstractChartLayout::calculateTitleGeometry(QRectF const&, QtCharts::ChartTitle*, bool) const (abstractchartlayout.cpp:180)
==11876== by 0x71D99AD: QtCharts::AbstractChartLayout::setGeometry(QRectF const&) (abstractchartlayout.cpp:69)
==11876== by 0x788D742: QGraphicsLayout::widgetEvent(QEvent*) (qgraphicslayout.cpp:395)
==11876== by 0x78D0BEA: QGraphicsWidget::event(QEvent*) (qgraphicswidget.cpp:1396)
==11876== by 0x75B292B: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:3700)
==11876== by 0x75B9B0F: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3446)
==11876== by 0x120BB4: (anonymous namespace)::PandoraApplication::notify(QObject*, QEvent*) (main.cpp:70)
==11876==
==11876== 13,824 bytes in 3 blocks are indirectly lost in loss record 10,534 of 10,780
==11876== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==11876== by 0x7F0DC39: init (qfragmentmap_p.h:229)
==11876== by 0x7F0DC39: clear (qfragmentmap_p.h:810)
==11876== by 0x7F0DC39: QTextDocumentPrivate::clear() (qtextdocument_p.cpp:271)
==11876== by 0x7F00695: QTextDocument::clear() (qtextdocument.cpp:379)
==11876== by 0x777CF69: QWidgetTextControlPrivate::setContent(Qt::TextFormat, QString const&, QTextDocument*) (qwidgettextcontrol.cpp:502)
==11876== by 0x714C15B: QtCharts::ChartTitle::setGeometry(QRectF const&) (charttitle.cpp:64)
==11876== by 0x71D9272: QtCharts::AbstractChartLayout::calculateTitleGeometry(QRectF const&, QtCharts::ChartTitle*, bool) const (abstractchartlayout.cpp:180)
==11876== by 0x71D99AD: QtCharts::AbstractChartLayout::setGeometry(QRectF const&) (abstractchartlayout.cpp:69)
==11876== by 0x788D742: QGraphicsLayout::widgetEvent(QEvent*) (qgraphicslayout.cpp:395)
==11876== by 0x78D0BEA: QGraphicsWidget::event(QEvent*) (qgraphicswidget.cpp:1396)
==11876== by 0x75B292B: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:3700)
==11876== by 0x75B9B0F: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3446)
==11876== by 0x120BB4: (anonymous namespace)::PandoraApplication::notify(QObject*, QEvent*) (main.cpp:70)
==11876==
==11876== 23,840 (40 direct, 23,800 indirect) bytes in 1 blocks are definitely lost in loss record 10,591 of 10,780
==11876== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==11876== by 0x88489B0: qMapAllocate (qmap.cpp:316)
==11876== by 0x88489B0: QMapDataBase::createNode(int, int, QMapNodeBase*, bool) (qmap.cpp:329)
==11876== by 0x7F09DD2: createNode (qmap.h:226)
==11876== by 0x7F09DD2: insert (qmap.h:726)
==11876== by 0x7F09DD2: operator[] (qmap.h:676)
==11876== by 0x7F09DD2: QTextDocumentPrivate::createObject(QTextFormat const&, int) (qtextdocument_p.cpp:1628)
==11876== by 0x7F09EF0: QTextDocumentPrivate::rootFrame() const (qtextdocument_p.cpp:1446)
==11876== by 0x7F2D9FC: QTextDocumentLayout::doLayout(int, int, int) (qtextdocumentlayout.cpp:2980)
==11876== by 0x7F2DB2B: QTextDocumentLayoutPrivate::ensureLayoutedByPosition(int) const [clone .part.131] (qtextdocumentlayout.cpp:3152)
==11876== by 0x7F2DF3C: ensureLayoutedByPosition (qtextdocumentlayout.cpp:3160)
==11876== by 0x7F2DF3C: QTextDocumentLayoutPrivate::layoutStep() const (qtextdocumentlayout.cpp:3158)
==11876== by 0x7F2E34F: QTextDocumentLayout::documentChanged(int, int, int) (qtextdocumentlayout.cpp:2946)
==11876== by 0x7F0AE29: QTextDocumentPrivate::finishEdit() (qtextdocument_p.cpp:1219)
==11876== by 0x7F0C144: QTextDocumentPrivate::insertBlock(QChar, int, int, int, QTextUndoCommand::Operation) (qtextdocument_p.cpp:442)
==11876== by 0x7F0C2C7: QTextDocumentPrivate::insertBlock(int, int, int, QTextUndoCommand::Operation) (qtextdocument_p.cpp:448)
==11876== by 0x7F0C361: QTextDocumentPrivate::init() (qtextdocument_p.cpp:226)
==11876==
==11876== 23,840 (8 direct, 23,832 indirect) bytes in 1 blocks are definitely lost in loss record 10,592 of 10,780
==11876== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==11876== by 0x7EF4C9C: QTextBlock::layout() const (qtextobject.cpp:1086)
==11876== by 0x7F25387: QTextDocumentLayoutPrivate::layoutBlock(QTextBlock const&, int, QTextBlockFormat const&, QTextLayoutStruct*, int, int, QTextBlockFormat const*) (qtextdocumentlayout.cpp:2573)
==11876== by 0x7F27637: QTextDocumentLayoutPrivate::layoutFlow(QTextFrame::iterator, QTextLayoutStruct*, int, int, QFixed) (qtextdocumentlayout.cpp:2439)
==11876== by 0x7F2D3DE: QTextDocumentLayoutPrivate::layoutFrame(QTextFrame*, int, int, QFixed, QFixed, QFixed) (qtextdocumentlayout.cpp:2180)
==11876== by 0x7F2D89B: QTextDocumentLayoutPrivate::layoutFrame(QTextFrame*, int, int, QFixed) (qtextdocumentlayout.cpp:2070)
==11876== by 0x7F2DAB7: QTextDocumentLayout::doLayout(int, int, int) (qtextdocumentlayout.cpp:2986)
==11876== by 0x7F2DB2B: QTextDocumentLayoutPrivate::ensureLayoutedByPosition(int) const [clone .part.131] (qtextdocumentlayout.cpp:3152)
==11876== by 0x7F2DF3C: ensureLayoutedByPosition (qtextdocumentlayout.cpp:3160)
==11876== by 0x7F2DF3C: QTextDocumentLayoutPrivate::layoutStep() const (qtextdocumentlayout.cpp:3158)
==11876== by 0x7F2E34F: QTextDocumentLayout::documentChanged(int, int, int) (qtextdocumentlayout.cpp:2946)
==11876== by 0x7F0AE29: QTextDocumentPrivate::finishEdit() (qtextdocument_p.cpp:1219)
==11876== by 0x7F0C144: QTextDocumentPrivate::insertBlock(QChar, int, int, int, QTextUndoCommand::Operation) (qtextdocument_p.cpp:442)
==11876==
==11876== 23,840 (72 direct, 23,768 indirect) bytes in 1 blocks are definitely lost in loss record 10,593 of 10,780
==11876== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==11876== by 0x89DBC5F: QMetaObjectPrivate::connect(QObject const*, int, QMetaObject const*, QObject const*, int, QMetaObject const*, int, int*) [clone .constprop.103] (qobject.cpp:3331)
==11876== by 0x89DC37D: QMetaObject::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:3284)
==11876== by 0x777CD7E: QWidgetTextControlPrivate::setContent(Qt::TextFormat, QString const&, QTextDocument*) (qwidgettextcontrol.cpp:506)
==11876== by 0x714C15B: QtCharts::ChartTitle::setGeometry(QRectF const&) (charttitle.cpp:64)
==11876== by 0x71D9272: QtCharts::AbstractChartLayout::calculateTitleGeometry(QRectF const&, QtCharts::ChartTitle*, bool) const (abstractchartlayout.cpp:180)
==11876== by 0x71D99AD: QtCharts::AbstractChartLayout::setGeometry(QRectF const&) (abstractchartlayout.cpp:69)
==11876== by 0x788D742: QGraphicsLayout::widgetEvent(QEvent*) (qgraphicslayout.cpp:395)
==11876== by 0x78D0BEA: QGraphicsWidget::event(QEvent*) (qgraphicswidget.cpp:1396)
==11876== by 0x75B292B: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:3700)
==11876== by 0x75B9B0F: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3446)
==11876== by 0x120BB4: (anonymous namespace)::PandoraApplication::notify(QObject*, QEvent*) (main.cpp:70)
==11876==