yuxshao / ptcollab

A collaborative piano-roll music sequencer!

Home Page:https://yuxshao.github.io/ptcollab/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Segfault on shutdown

yuxshao opened this issue · comments

OPNA2608 reports:

Thread 1 ".ptcollab-wrapp" received signal SIGSEGV, Segmentation fault.
0x00000000004b5a70 in pxtnMaster::get_beat_clock() const ()
(gdb) bt
#0  0x00000000004b5a70 in pxtnMaster::get_beat_clock() const ()
#1  0x00000000004b626e in MasterExtended::last_clock(pxtnMaster const*) ()
#2  0x00000000004851c4 in MooClock::tick() ()
#3  0x00007ffff6d02487 in ?? () from /nix/store/l9lbmr8mmambd5lbyg99lmmk6j66zd1j-qtbase-5.15.3/lib/libQt5Core.so.5
#4  0x00007ffff6ac0ba2 in QVariantAnimation::valueChanged(QVariant const&) () from /nix/store/l9lbmr8mmambd5lbyg99lmmk6j66zd1j-qtbase-5.15.3/lib/libQt5Core.so.5
#5  0x00007ffff6ac0ecb in ?? () from /nix/store/l9lbmr8mmambd5lbyg99lmmk6j66zd1j-qtbase-5.15.3/lib/libQt5Core.so.5
#6  0x00007ffff6abe347 in QAbstractAnimation::setCurrentTime(int) () from /nix/store/l9lbmr8mmambd5lbyg99lmmk6j66zd1j-qtbase-5.15.3/lib/libQt5Core.so.5
#7  0x00007ffff6abe4d7 in ?? () from /nix/store/l9lbmr8mmambd5lbyg99lmmk6j66zd1j-qtbase-5.15.3/lib/libQt5Core.so.5
#8  0x00007ffff6abce73 in QUnifiedTimer::updateAnimationTimers(long long) () from /nix/store/l9lbmr8mmambd5lbyg99lmmk6j66zd1j-qtbase-5.15.3/lib/libQt5Core.so.5
#9  0x00007ffff6abeb1d in QAnimationDriver::advanceAnimation(long long) () from /nix/store/l9lbmr8mmambd5lbyg99lmmk6j66zd1j-qtbase-5.15.3/lib/libQt5Core.so.5
#10 0x00007ffff6cf812f in QObject::event(QEvent*) () from /nix/store/l9lbmr8mmambd5lbyg99lmmk6j66zd1j-qtbase-5.15.3/lib/libQt5Core.so.5
#11 0x00007ffff7a4576f in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /nix/store/l9lbmr8mmambd5lbyg99lmmk6j66zd1j-qtbase-5.15.3/lib/libQt5Widgets.so.5
#12 0x00007ffff6ccb48a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /nix/store/l9lbmr8mmambd5lbyg99lmmk6j66zd1j-qtbase-5.15.3/lib/libQt5Core.so.5
#13 0x00007ffff6d2281b in QTimerInfoList::activateTimers() () from /nix/store/l9lbmr8mmambd5lbyg99lmmk6j66zd1j-qtbase-5.15.3/lib/libQt5Core.so.5
#14 0x00007ffff6d230a4 in ?? () from /nix/store/l9lbmr8mmambd5lbyg99lmmk6j66zd1j-qtbase-5.15.3/lib/libQt5Core.so.5
#15 0x00007ffff6189b0b in g_main_context_dispatch () from /nix/store/400jv7hm1qdi4hzn9yrx1wk7319mrzgm-glib-2.70.2/lib/libglib-2.0.so.0
#16 0x00007ffff6189db8 in g_main_context_iterate.constprop () from /nix/store/400jv7hm1qdi4hzn9yrx1wk7319mrzgm-glib-2.70.2/lib/libglib-2.0.so.0
#17 0x00007ffff6189e6f in g_main_context_iteration () from /nix/store/400jv7hm1qdi4hzn9yrx1wk7319mrzgm-glib-2.70.2/lib/libglib-2.0.so.0
#18 0x00007ffff6d234e1 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /nix/store/l9lbmr8mmambd5lbyg99lmmk6j66zd1j-qtbase-5.15.3/lib/libQt5Core.so.5
#19 0x00007fffe896a728 in ?? () from /nix/store/id4dw4ligz34ss360ihagk8zkkkqajsk-qtmultimedia-5.15.3-bin/lib/qt-5.15.3/plugins/audio/libqtmedia_pulse.so
#20 0x00007fffe896a7f9 in ?? () from /nix/store/id4dw4ligz34ss360ihagk8zkkkqajsk-qtmultimedia-5.15.3-bin/lib/qt-5.15.3/plugins/audio/libqtmedia_pulse.so
#21 0x00007ffff782f831 in QAudioOutput::~QAudioOutput() () from /nix/store/b09dq4wn9w6x8dcbmj72bmx7zbn5alsb-qtmultimedia-5.15.3/lib/libQt5Multimedia.so.5
#22 0x00007ffff782f849 in QAudioOutput::~QAudioOutput() () from /nix/store/b09dq4wn9w6x8dcbmj72bmx7zbn5alsb-qtmultimedia-5.15.3/lib/libQt5Multimedia.so.5
#23 0x00007ffff6cf58d8 in QObjectPrivate::deleteChildren() () from /nix/store/l9lbmr8mmambd5lbyg99lmmk6j66zd1j-qtbase-5.15.3/lib/libQt5Core.so.5
#24 0x00007ffff6d00694 in QObject::~QObject() () from /nix/store/l9lbmr8mmambd5lbyg99lmmk6j66zd1j-qtbase-5.15.3/lib/libQt5Core.so.5
#25 0x00000000004cde3c in PxtoneClient::~PxtoneClient() ()
#26 0x00007ffff6cf58d8 in QObjectPrivate::deleteChildren() () from /nix/store/l9lbmr8mmambd5lbyg99lmmk6j66zd1j-qtbase-5.15.3/lib/libQt5Core.so.5
#27 0x00007ffff7a830d8 in QWidget::~QWidget() () from /nix/store/l9lbmr8mmambd5lbyg99lmmk6j66zd1j-qtbase-5.15.3/lib/libQt5Widgets.so.5
#28 0x0000000000431ced in main ()

Seems to do with 67723d1 but I'm not sure why there'd be a use-after-free here; the signal and slot that caused the segfault are both children of PxtoneClient, so I would've thought they'd be cleaned up before the rest of PxtoneClient is destroyed.

okay, it's because pxtnService is a member variable of EditorWindow, so it's destroyed as part of ~EditorWindow before m_moo_clock is destroyed as part of cleanup of EditorWindow's qt object hierarchy (since that's part of ~QObject, base class destructor). question remains how to handle this