QT5: Tango skin is crashing

Bug #1776555 reported by Daniel Schürmann on 2018-06-12
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
Critical
Daniel Schürmann

Bug Description

With recent master, switching to Tango skin crashes Mixxx.

This happens on Ubuntu Trusty 64 bit nd QT 5.2

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff5800bd5 in QWidget::render (this=0x12b9c9f0,
    painter=painter@entry=0x7fffffffa720, targetOffset=..., sourceRegion=...,
    renderFlags=renderFlags@entry=...) at kernel/qwidget.cpp:4730
4730 kernel/qwidget.cpp: Datei oder Verzeichnis nicht gefunden.
(gdb) bt
#0 0x00007ffff5800bd5 in QWidget::render (this=0x12b9c9f0,
    painter=painter@entry=0x7fffffffa720, targetOffset=..., sourceRegion=...,
    renderFlags=renderFlags@entry=...) at kernel/qwidget.cpp:4730
#1 0x00000000009d183c in PreviewButtonDelegate::paintItem (this=0xbf99730,
    painter=0x7fffffffa720, option=..., index=...)
    at src/library/previewbuttondelegate.cpp:93
#2 0x0000000000a12e05 in TableItemDelegate::paint (this=0xbf99730,
    painter=0x7fffffffa720, option=..., index=...)
    at src/library/tableitemdelegate.cpp:45
#3 0x00007ffff5a21100 in QTableViewPrivate::drawCell (
    this=this@entry=0x124aa590, painter=painter@entry=0x7fffffffa720,
    option=..., index=...) at itemviews/qtableview.cpp:930
#4 0x00007ffff5a2aa5b in QTableView::paintEvent (this=0x124aa2f0,
    event=<optimized out>) at itemviews/qtableview.cpp:1486
#5 0x00007ffff5803302 in QWidget::event (this=this@entry=0x124aa2f0,
    event=event@entry=0x7fffffffae00) at kernel/qwidget.cpp:8098
#6 0x00007ffff58fec7e in QFrame::event (this=0x124aa2f0, e=0x7fffffffae00)
    at widgets/qframe.cpp:534
#7 0x00007ffff59ffd5b in QAbstractItemView::viewportEvent (this=0x124aa2f0,
    event=0x7fffffffae00) at itemviews/qabstractitemview.cpp:1689
#8 0x00007ffff4982e53 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=this@entry=0x145d430, receiver=receiver@entry=0x124ab030,
    event=event@entry=0x7fffffffae00) at kernel/qcoreapplication.cpp:977
---Type <return> to continue, or q <return> to quit---
#9 0x00007ffff57c7c6c in QApplicationPrivate::notify_helper (
    this=this@entry=0x145d430, receiver=receiver@entry=0x124ab030,
    e=e@entry=0x7fffffffae00) at kernel/qapplication.cpp:3482
#10 0x00007ffff57cce56 in QApplication::notify (this=0x7fffffffdd80,
    receiver=0x124ab030, e=0x7fffffffae00) at kernel/qapplication.cpp:3236
#11 0x00007ffff4982c2d in QCoreApplication::notifyInternal (this=
    0x7fffffffdd80, receiver=receiver@entry=0x124ab030,
    event=event@entry=0x7fffffffae00) at kernel/qcoreapplication.cpp:881
#12 0x00007ffff57fdbea in sendSpontaneousEvent (event=0x7fffffffae00,
    receiver=0x124ab030)
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:235
#13 QWidgetPrivate::drawWidget (this=this@entry=0x124ab070, pdev=pdev@entry=
    0x170d6f0, rgn=..., offset=..., flags=flags@entry=4,
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5138
#14 0x00007ffff57fe5bc in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0x124aa590, pdev=pdev@entry=0x170d6f0,
    siblings=QList<QObject *> (size = 58) = {...}, index=<optimized out>,
    index@entry=47, rgn=..., offset=..., flags=flags@entry=4,
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5332
#15 0x00007ffff57fe434 in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0x124aa590, pdev=pdev@entry=0x170d6f0,
---Type <return> to continue, or q <return> to quit---
    siblings=QList<QObject *> (size = 58) = {...}, index=47, index@entry=55,
    rgn=..., offset=..., flags=flags@entry=4,
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5319
#16 0x00007ffff57fe434 in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0x124aa590, pdev=pdev@entry=0x170d6f0,
    siblings=QList<QObject *> (size = 58) = {...}, index=55, index@entry=56,
    rgn=..., offset=..., flags=flags@entry=4,
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5319
#17 0x00007ffff57fe434 in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0x124aa590, pdev=pdev@entry=0x170d6f0,
    siblings=QList<QObject *> (size = 58) = {...}, index=56, rgn=...,
    offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5319
#18 0x00007ffff57fd786 in QWidgetPrivate::drawWidget (
    this=this@entry=0x124aa590, pdev=pdev@entry=0x170d6f0, rgn=...,
    offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5189
#19 0x00007ffff57fe5bc in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0x124a96d0, pdev=pdev@entry=0x170d6f0,
    siblings=QList<QObject *> (size = 11) = {...}, index=<optimized out>,
    rgn=..., offset=..., flags=flags@entry=4,
---Type <return> to continue, or q <return> to quit---
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5332
#20 0x00007ffff57fd786 in QWidgetPrivate::drawWidget (
    this=this@entry=0x124a96d0, pdev=pdev@entry=0x170d6f0, rgn=...,
    offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5189
#21 0x00007ffff57fe5bc in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0x124a7ce0, pdev=pdev@entry=0x170d6f0,
    siblings=QList<QObject *> (size = 2) = {...}, index=<optimized out>,
    rgn=..., offset=..., flags=flags@entry=4,
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5332
#22 0x00007ffff57fd786 in QWidgetPrivate::drawWidget (
    this=this@entry=0x124a7ce0, pdev=pdev@entry=0x170d6f0, rgn=...,
    offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5189
#23 0x00007ffff57fe5bc in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0x123faa30, pdev=pdev@entry=0x170d6f0,
    siblings=QList<QObject *> (size = 4) = {...}, index=<optimized out>,
    index@entry=0, rgn=..., offset=..., flags=flags@entry=4,
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5332
#24 0x00007ffff57fe434 in QWidgetPrivate::paintSiblingsRecursive (
---Type <return> to continue, or q <return> to quit---
    this=this@entry=0x123faa30, pdev=pdev@entry=0x170d6f0,
    siblings=QList<QObject *> (size = 4) = {...}, index=0, index@entry=2,
    rgn=..., offset=..., flags=flags@entry=4,
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5319
#25 0x00007ffff57fe434 in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0x123faa30, pdev=pdev@entry=0x170d6f0,
    siblings=QList<QObject *> (size = 4) = {...}, index=2, rgn=...,
    offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5319
#26 0x00007ffff57fd786 in QWidgetPrivate::drawWidget (
    this=this@entry=0x123faa30, pdev=pdev@entry=0x170d6f0, rgn=...,
    offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5189
#27 0x00007ffff57fe5bc in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0x123f28b0, pdev=pdev@entry=0x170d6f0,
    siblings=QList<QObject *> (size = 3) = {...}, index=<optimized out>,
    rgn=..., offset=..., flags=flags@entry=4,
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5332
#28 0x00007ffff57fd786 in QWidgetPrivate::drawWidget (
    this=this@entry=0x123f28b0, pdev=pdev@entry=0x170d6f0, rgn=...,
    offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0,
---Type <return> to continue, or q <return> to quit---
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5189
#29 0x00007ffff57fe5bc in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0x6280c130, pdev=pdev@entry=0x170d6f0,
    siblings=QList<QObject *> (size = 2) = {...}, index=<optimized out>,
    rgn=..., offset=..., flags=flags@entry=4,
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5332
#30 0x00007ffff57fd786 in QWidgetPrivate::drawWidget (
    this=this@entry=0x6280c130, pdev=pdev@entry=0x170d6f0, rgn=...,
    offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5189
#31 0x00007ffff57fe5bc in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0xd3518c0, pdev=pdev@entry=0x170d6f0,
    siblings=QList<QObject *> (size = 12) = {...}, index=<optimized out>,
    rgn=..., offset=..., flags=flags@entry=4,
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5332
#32 0x00007ffff57fd786 in QWidgetPrivate::drawWidget (
    this=this@entry=0xd3518c0, pdev=pdev@entry=0x170d6f0, rgn=..., offset=...,
    flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5189
#33 0x00007ffff57fe5bc in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0xd35b940, pdev=pdev@entry=0x170d6f0,
---Type <return> to continue, or q <return> to quit---
    siblings=QList<QObject *> (size = 4) = {...}, index=<optimized out>,
    index@entry=0, rgn=..., offset=..., flags=flags@entry=4,
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5332
#34 0x00007ffff57fe434 in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0xd35b940, pdev=pdev@entry=0x170d6f0,
    siblings=QList<QObject *> (size = 4) = {...}, index=0, index@entry=2,
    rgn=..., offset=..., flags=flags@entry=4,
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5319
#35 0x00007ffff57fe434 in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0xd35b940, pdev=pdev@entry=0x170d6f0,
    siblings=QList<QObject *> (size = 4) = {...}, index=2, rgn=...,
    offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5319
#36 0x00007ffff57fd786 in QWidgetPrivate::drawWidget (
    this=this@entry=0xd35b940, pdev=pdev@entry=0x170d6f0, rgn=..., offset=...,
    flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5189
#37 0x00007ffff57fe5bc in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0xd22f070, pdev=pdev@entry=0x170d6f0,
    siblings=QList<QObject *> (size = 3) = {...}, index=<optimized out>,
    rgn=..., offset=..., flags=flags@entry=4,
---Type <return> to continue, or q <return> to quit---
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5332
#38 0x00007ffff57fd786 in QWidgetPrivate::drawWidget (
    this=this@entry=0xd22f070, pdev=pdev@entry=0x170d6f0, rgn=..., offset=...,
    flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5189
#39 0x00007ffff57fe5bc in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0xd22ed70, pdev=pdev@entry=0x170d6f0,
    siblings=QList<QObject *> (size = 4) = {...}, index=<optimized out>,
    rgn=..., offset=..., flags=flags@entry=4,
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5332
#40 0x00007ffff57fd786 in QWidgetPrivate::drawWidget (
    this=this@entry=0xd22ed70, pdev=pdev@entry=0x170d6f0, rgn=..., offset=...,
    flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5189
#41 0x00007ffff57fe5bc in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0x123f20b0, pdev=pdev@entry=0x170d6f0,
    siblings=QList<QObject *> (size = 4) = {...}, index=<optimized out>,
    rgn=..., offset=..., flags=flags@entry=4,
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5332
#42 0x00007ffff57fd786 in QWidgetPrivate::drawWidget (
---Type <return> to continue, or q <return> to quit---
    this=this@entry=0x123f20b0, pdev=pdev@entry=0x170d6f0, rgn=...,
    offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5189
#43 0x00007ffff57fe5bc in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0xee97560, pdev=pdev@entry=0x170d6f0,
    siblings=QList<QObject *> (size = 57) = {...}, index=<optimized out>,
    rgn=..., offset=..., flags=flags@entry=4,
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5332
#44 0x00007ffff57fd786 in QWidgetPrivate::drawWidget (
    this=this@entry=0xee97560, pdev=pdev@entry=0x170d6f0, rgn=..., offset=...,
    flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5189
#45 0x00007ffff57fe5bc in QWidgetPrivate::paintSiblingsRecursive (
    this=this@entry=0x167fef0, pdev=pdev@entry=0x170d6f0,
    siblings=QList<QObject *> (size = 9) = {...}, index=<optimized out>,
    rgn=..., offset=..., flags=flags@entry=4,
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5332
#46 0x00007ffff57fd786 in QWidgetPrivate::drawWidget (this=0x167fef0,
    pdev=0x170d6f0, rgn=..., offset=..., flags=flags@entry=5,
    sharedPainter=sharedPainter@entry=0x0,
    backingStore=backingStore@entry=0x1689d10) at kernel/qwidget.cpp:5189
---Type <return> to continue, or q <return> to quit---
#47 0x00007ffff57d4233 in QWidgetBackingStore::sync (this=0x1689d10)
    at kernel/qwidgetbackingstore.cpp:1081
#48 0x00007ffff57f3e2f in QWidgetPrivate::syncBackingStore (
    this=this@entry=0x167fef0) at kernel/qwidget.cpp:1686
#49 0x00007ffff5803112 in QWidget::event (this=0x7fffffffddb0, event=0x16a2d00)
    at kernel/qwidget.cpp:8236
#50 0x00007ffff57c7c8c in QApplicationPrivate::notify_helper (
    this=this@entry=0x145d430, receiver=receiver@entry=0x7fffffffddb0,
    e=e@entry=0x16a2d00) at kernel/qapplication.cpp:3486
#51 0x00007ffff57cce56 in QApplication::notify (this=0x7fffffffdd80,
    receiver=0x7fffffffddb0, e=0x16a2d00) at kernel/qapplication.cpp:3236
#52 0x00007ffff4982c2d in QCoreApplication::notifyInternal (
    this=0x7fffffffdd80, receiver=0x7fffffffddb0, event=event@entry=0x16a2d00)
    at kernel/qcoreapplication.cpp:881
#53 0x00007ffff4984e07 in sendEvent (event=0x16a2d00, receiver=<optimized out>)
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:232
#54 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0,
    event_type=event_type@entry=0, data=0x1454bb0)
    at kernel/qcoreapplication.cpp:1485
#55 0x00007ffff4985433 in QCoreApplication::sendPostedEvents (
    receiver=receiver@entry=0x0, event_type=event_type@entry=0)
    at kernel/qcoreapplication.cpp:1343
#56 0x00007ffff49cfcd3 in postEventSourceDispatch (s=0x15193a0)
---Type <return> to continue, or q <return> to quit---
    at kernel/qeventdispatcher_glib.cpp:279
#57 0x00007ffff0f2ae04 in g_main_context_dispatch ()
   from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#58 0x00007ffff0f2b048 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#59 0x00007ffff0f2b0ec in g_main_context_iteration ()
   from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#60 0x00007ffff49cf98c in QEventDispatcherGlib::processEvents (this=0x1534310,
    flags=...) at kernel/qeventdispatcher_glib.cpp:426
#61 0x00007ffff498196b in QEventLoop::exec (this=this@entry=0x7fffffffdc90,
    flags=..., flags@entry=...) at kernel/qeventloop.cpp:212
#62 0x00007ffff49880e1 in QCoreApplication::exec ()
    at kernel/qcoreapplication.cpp:1134

#63 0x00007ffff511a11c in QGuiApplication::exec ()
    at kernel/qguiapplication.cpp:1343
#64 0x00007ffff57c6605 in QApplication::exec () at kernel/qapplication.cpp:2711
#65 0x0000000000475533 in runMixxx (args=..., app=0x7fffffffdd80)
    at src/main.cpp:53
#66 main (argc=1, argv=<optimized out>) at src/main.cpp:132

Changed in mixxx:
milestone: none → 2.2.0
importance: Undecided → Critical
Be (be.ing) wrote :

I have been using Tango fine with Qt 5.10. I am guessing this is related to the old version of Qt.

ronso0 (ronso0) wrote :

I'm on Trusty as well, and I compiled master & lib-redesign with qt5.2.
There are various crashers appearantly related to waveforms and other paint events.

Changed in mixxx:
status: New → In Progress
assignee: nobody → Daniel Schürmann (daschuer)
Daniel Schürmann (daschuer) wrote :

It crashes when the library is sibling with spinnies. This leads to a size change during painting which invalidated the QPaintDevice and leads to the crash:
QPaintDevice: Cannot destroy paint device that is being painted"

The style is unrelated.

Not sure what is special with the spinnies in tango that it only crashes here.
Anyway, the bug can be fixed if we remove the temporary button, used for painting all preview buttons, from the QT Object tree. I have used a std::unique_ptr instead.

ronso0 (ronso0) wrote :

> It crashes when the library is sibling with spinnies

What does that mean?

I suppose you want to link to https://github.com/mixxxdj/mixxx/pull/1747

Daniel Schürmann (daschuer) wrote :

If I remove the library, no crash.
If I remove the spinnies, no ctash.
If I parent the render button to a the menu bar, no crash.
Since the button dies not inherit style from a parent, no parent is the cleanest solution.

ronso0 (ronso0) wrote :

fine, if it's fixed.
I compiled 2.1 with qt5.2 and removed the spinny templates.
It crashed when I opened the Skin Settings.
Removed the library (main table, tree is there) as well, and it didn't crash.
Deere also crashed on various occasions until I removed the lib table.

ronso0 (ronso0) wrote :

so it was the Library Preview button..

Changed in mixxx:
status: In Progress → Fix Committed
Be (be.ing) on 2018-08-20
Changed in mixxx:
milestone: 2.2.0 → 2.1.2
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers