Segfault probably related to note stacking automation (bug 2)
- Dominant language
- C++
- Stars
- 10.4k
- Forks
- 1.3k
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 7
Description
Hi,
This issue may share the same root cause with issue #6926.
Conditions: I have an instrument (Kicker, but it may not matter), note stacking is active and stacking chord selector is connected to a white noise LFO (yes, this is quite experimental! ^^). The instrument is used in a pattern track.
The issue is not present in the project file I joined to #6926 but it is on my original project, I open the project, open the the pattern editor, open the Kicker instrument, then when I try to go to the Stacking & Arppegios tab, it segfaults. But unlike #6926, it’s not an issue in the main thread (the song isn’t even playing) but in the GUI thread.
I wasn’t able to reproduce starting with an empty project but it happens on the same project (and same instrument) than #6926, systematically too, this is why I suppose both issues may have the same cause.
Backtrace:
```
#0 0x000055555587f893 in lmms::gui::ComboBox::paintEvent(QPaintEvent*) ()
#1 0x00007ffff79a4db8 in QWidget::event(QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#2 0x00007ffff7962fae in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#3 0x00007ffff66b16f8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#4 0x00007ffff799d0d5 in QWidgetPrivate::sendPaintEvent(QRegion const&) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#5 0x00007ffff799d9d1 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) ()
at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#6 0x00007ffff799ecd6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#7 0x00007ffff799eb39 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#8 0x00007ffff799d64c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) ()
at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#9 0x00007ffff799ecd6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#10 0x00007ffff799d64c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) ()
at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#11 0x00007ffff799ecd6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#12 0x00007ffff799eb39 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#13 0x00007ffff799d64c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) ()
at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#14 0x00007ffff799ecd6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#15 0x00007ffff799d64c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) ()
at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#16 0x00007ffff799ecd6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#17 0x00007ffff799d64c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) ()
at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#18 0x00007ffff799ecd6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#19 0x00007ffff799d64c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) ()
at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#20 0x00007ffff799ecd6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#21 0x00007ffff799d64c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) ()
at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#22 0x00007ffff799ecd6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#23 0x00007ffff799d64c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) ()
at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#24 0x00007ffff799ecd6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#25 0x00007ffff799d64c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) ()
at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007ffff799ecd6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
--Type for more, q to quit, c to continue without paging--
#27 0x00007ffff799d64c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) ()
at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#28 0x00007ffff799ecd6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#29 0x00007ffff799d64c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) ()
at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#30 0x00007ffff799ecd6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#31 0x00007ffff799d64c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) ()
at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#32 0x00007ffff7974305 in () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#33 0x00007ffff79a5078 in QWidget::event(QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#34 0x00007ffff7962fae in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#35 0x00007ffff66b16f8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#36 0x00007ffff66b4681 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#37 0x00007ffff670a153 in () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#38 0x00007ffff551e7a9 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#39 0x00007ffff551ea38 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#40 0x00007ffff551eacc in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#41 0x00007ffff6709836 in QEventDispatcherGlib::processEvents(QFlags) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#42 0x00007ffff66b017b in QEventLoop::exec(QFlags) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#43 0x00007ffff66b82d6 in QCoreApplication::exec() () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#44 0x000055555568ae83 in main ()
```
The system is Debian 12 / GCC 4.12.2.0-3
I’ll try to provide a project with this bug present but I may not join the full faulty project for legal reason.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reproducing the reported sequence with note stacking enabled, the stacking chord selector connected to a white-noise LFO, and the supplied project or instrument from issue #6926. Inspect the GUI-thread backtrace beginning at lmms::gui::ComboBox::paintEvent(QPaintEvent*). Done means opening the Stacking & Arpeggios tab no longer segfaults under these conditions.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100