QT5: Tango skin is crashing

Bug #1776555 reported by Daniel Schürmann
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
Fix Committed
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
Revision history for this message
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.

Revision history for this message
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)
Revision history for this message
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.

Revision history for this message
Daniel Schürmann (daschuer) wrote :
Revision history for this message
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

Revision history for this message
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.

Revision history for this message
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.

Revision history for this message
ronso0 (ronso0) wrote :

so it was the Library Preview button..

Changed in mixxx:
status: In Progress → Fix Committed
Be (be.ing)
Changed in mixxx:
milestone: 2.2.0 → 2.1.2
Revision history for this message
Swiftb0y (swiftb0y) wrote :

Mixxx now uses GitHub for bug tracking. This bug has been migrated to:
https://github.com/mixxxdj/mixxx/issues/9337

lock status: Metadata changes locked and limited to project staff
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.