mixxxdj / mixxx

Mixxx is Free DJ software that gives you everything you need to perform live mixes.
http://mixxx.org
Other
4.51k stars 1.28k forks source link

Setting CO `[EqualizerRack1_[ChannelN]]` `loaded_chain_preset` crashes #11376

Closed Swiftb0y closed 1 year ago

Swiftb0y commented 1 year ago

Bug Description

Essentially seems to boil down to an out-of-bounds access in EffectChain::loadChainPreset(QSharedPointer<EffectChainPreset>) at /src/effects/effectchain.cpp:211

Can easily reproduced by setting the CO to any value != 0 in via the dev tools. The other loaded_chain_preset COs work fine (for example for [QuickEffectRack1_[ChannelN]]).

Backtrace (I removed unrelated threads because that made the comment too big).

Thread 1 "mixxx" received signal SIGABRT, Aborted.
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, 
    no_tid=no_tid@entry=0) at pthread_kill.c:44
44            return INTERNAL_SYSCALL_ERROR_P (ret) ? INTERNAL_SYSCALL_ERRNO (ret) : 0;
Missing separate debuginfos, use: dnf debuginfo-install faad2-libs-2.10.1-1.fc37.x86_64 ffmpeg-libs-5.1.2-9.fc37.x86_64 x264-libs-0.164-3.20220602gitbaee400f.fc37.x86_64 x265-libs-3.5-5.fc37.x86_64
(gdb) set height 0
(gdb) thread apply all bt full

Thread 1 (Thread 0x7fffea403480 (LWP 459809) "mixxx"):
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
        tid = <optimized out>
        ret = 0
        pd = <optimized out>
        old_mask = {__val = {140737311559680}}
        ret = <optimized out>
#1  0x00007ffff32d4ec3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2  0x00007ffff3284a76 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
        ret = <optimized out>
#3  0x00007ffff326e7fc in __GI_abort () at abort.c:79
        save_stage = 1
        act = {__sigaction_handler = {sa_handler = 0x20, sa_sigaction = 0x20}, sa_mask = {__val = {140737488342120, 0, 140737488342448, 140737488342448, 140737353982204, 3, 140737353993148, 140737488342360, 140737308917652, 0, 12766341242620524544, 140737488342360, 140737488342120, 3, 140737488342360, 40699104}}, sa_flags = -179437400, sa_restorer = 0xfd1d88}
#4  0x00007ffff54b14e5 in qt_message_fatal (message=Python Exception <class 'gdb.error'>: value has been optimized out
<synthetic pointer>, context=<optimized out>) at global/qlogging.cpp:1914
        message = Python Exception <class 'gdb.error'>: value has been optimized out

        ap = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7fffffffcd50, reg_save_area = 0x7fffffffcc90}}
#5  QMessageLogger::fatal(char const*, ...) const (this=this@entry=0x7fffffffcd58, msg=msg@entry=0x7ffff5767028 "ASSERT failure in %s: \"%s\", file %s, line %d") at global/qlogging.cpp:893
        message = Python Exception <class 'gdb.error'>: value has been optimized out

        ap = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7fffffffcd50, reg_save_area = 0x7fffffffcc90}}
#6  0x00007ffff54b0888 in qt_assert_x(char const*, char const*, char const*, int) (where=where@entry=0xfaca9d "QList<T>::at", what=what@entry=0xfaca8a "index out of range", file=file@entry=0xfabaa8 "/usr/include/qt5/QtCore/qlist.h", line=line@entry=571) at global/qglobal.cpp:3399
#7  0x00000000004bd29a in QList<QSharedPointer<EffectSlot> >::at(int) const (i=1, this=0x26d0538) at /usr/include/qt5/QtCore/qlist.h:571
        pEffectPreset = <optimized out>
        __for_range = <optimized out>
        __PRETTY_FUNCTION__ = "virtual void EffectChain::loadChainPreset(EffectChainPresetPointer)"
        effectSlotIndex = 1
#8  EffectChain::loadChainPreset(QSharedPointer<EffectChainPreset>) (this=0x26d04e0, pPreset=...) at /home/swiftb0y/Sourcerepositories/mixxx/src/effects/effectchain.cpp:211
        pEffectPreset = <optimized out>
        __for_range = <optimized out>
        __PRETTY_FUNCTION__ = "virtual void EffectChain::loadChainPreset(EffectChainPresetPointer)"
        effectSlotIndex = 1
#9  0x000000000071d15e in EffectChain::slotControlLoadedChainPresetRequest(double) (this=0x26d04e0, value=<optimized out>) at /home/swiftb0y/Sourcerepositories/mixxx/src/effects/effectchain.cpp:349
        index = 0
#10 0x00007ffff56d0e96 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7fffffffcf30, r=<optimized out>, this=0x48a9d80) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
        receiver = <optimized out>
        td = <optimized out>
        receiverInSameThread = <optimized out>
        senderData = {previous = 0x0, receiver = 0x26d04e0, sender = 0x48a99c0, signal = 4}
        c = 0x48a9db0
        connections = {d = 0x48a9c70}
        list = <optimized out>
        inSenderThread = true
        highestConnectionId = 3
        signalVector = 0x48a9ca0
        currentThreadId = 0x7fffea403480
        sp = <optimized out>
        signal_spy_set = 0x0
        empty_argv = {0x0}
        senderDeleted = false
#11 doActivate<false>(QObject*, int, void**) (sender=0x48a99c0, signal_index=4, argv=0x7fffffffcf30) at kernel/qobject.cpp:3923
        receiver = <optimized out>
        td = <optimized out>
        receiverInSameThread = <optimized out>
        senderData = {previous = 0x0, receiver = 0x26d04e0, sender = 0x48a99c0, signal = 4}
        c = 0x48a9db0
        connections = {d = 0x48a9c70}
        list = <optimized out>
        inSenderThread = true
        highestConnectionId = 3
        signalVector = 0x48a9ca0
        currentThreadId = 0x7fffea403480
        sp = <optimized out>
        signal_spy_set = 0x0
        empty_argv = {0x0}
        senderDeleted = false
#12 0x00007ffff56cbe27 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x48a99c0, m=m@entry=0x12c4680 <ControlDoublePrivate::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x7fffffffcf30) at kernel/qobject.cpp:3983
#13 0x00000000006de512 in ControlDoublePrivate::valueChangeRequest(double) (_t1=<optimized out>, this=0x48a99c0) at /home/swiftb0y/Sourcerepositories/mixxx/cbuild/mixxx-lib_autogen/include/moc_control.cpp:152
        _a = {0x0, 0x7fffffffcf28}
#14 ControlDoublePrivate::set(double, QObject*) (this=0x48a99c0, value=<optimized out>, pSender=pSender@entry=0x2a6e7710) at /home/swiftb0y/Sourcerepositories/mixxx/src/control/control.cpp:267
#15 0x0000000000ced06b in ControlProxy::set(double) (v=<optimized out>, this=0x2a6e7710) at /usr/include/qt5/QtCore/qsharedpointer_impl.h:301
        row = <optimized out>
        column = 2
        control = <optimized out>
#16 ControlModel::setData(QModelIndex const&, QVariant const&, int) (this=0x19bab7f0, modelIndex=..., value=<optimized out>, role=<optimized out>) at /home/swiftb0y/Sourcerepositories/mixxx/src/control/controlmodel.cpp:172
        row = <optimized out>
        column = 2
        control = <optimized out>
#17 0x00007ffff5675f79 in QSortFilterProxyModel::setData(QModelIndex const&, QVariant const&, int) (this=this@entry=0x22937488, index=..., value=..., role=role@entry=2) at itemmodels/qsortfilterproxymodel.cpp:2306
        d = 0x1ae74fb0
        source_index = {r = 19533, c = 2, i = 0, m = 0x19bab7f0}
#18 0x00007ffff6850f79 in QStyledItemDelegate::setModelData(QWidget*, QAbstractItemModel*, QModelIndex const&) const (this=<optimized out>, editor=0x1e448a70, model=0x22937488, index=...) at itemviews/qstyleditemdelegate.cpp:486
        d = <optimized out>
        n = "value" = {[0] = 118 'v', [1] = 97 'a', [2] = 108 'l', [3] = 117 'u', [4] = 101 'e'}
#19 0x00007ffff682acaf in QAbstractItemView::commitData(QWidget*) (this=<optimized out>, editor=0x1e448a70) at itemviews/qabstractitemview.cpp:2912
        d = 0x299e9560
        index = {r = 4, c = 2, i = 580714176, m = 0x22937488}
        delegate = 0x19603c00
#20 0x00007ffff56d101f in doActivate<false>(QObject*, int, void**) (sender=0x19603c00, signal_index=3, argv=0x7fffffffd1f0) at kernel/qobject.cpp:3935
        method_relative = <optimized out>
        callFunction = <optimized out>
        methodIndex = 0
        receiver = 0x18ba8d50
        td = <optimized out>
        receiverInSameThread = <optimized out>
        senderData = {previous = 0x0, receiver = 0x18ba8d50, sender = 0x19603c00, signal = 3}
        c = 0x1d7bd5e0
        connections = {d = 0x1b9c8300}
        list = <optimized out>
        inSenderThread = true
        highestConnectionId = 3
        signalVector = 0x299eb390
        currentThreadId = 0x7fffea403480
        sp = <optimized out>
        signal_spy_set = 0x0
        empty_argv = {0x0}
        senderDeleted = false
#21 0x00007ffff56cbe27 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x19603c00, m=m@entry=0x7ffff6af42a0 <QAbstractItemDelegate::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fffffffd1f0) at kernel/qobject.cpp:3983
#22 0x00007ffff6848e83 in QAbstractItemDelegate::commitData(QWidget*) (this=this@entry=0x19603c00, _t1=<optimized out>, _t1@entry=0x1e448a70) at .moc/moc_qabstractitemdelegate.cpp:205
        _a = {0x0, 0x7fffffffd1e8}
#23 0x00007ffff6849a7a in QAbstractItemDelegatePrivate::_q_commitDataAndCloseEditor(QWidget*) (editor=0x1e448a70, this=<optimized out>) at itemviews/qabstractitemdelegate.cpp:633
        q = 0x19603c00
        _t = <optimized out>
#24 QAbstractItemDelegate::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at .moc/moc_qabstractitemdelegate.cpp:100
        _t = <optimized out>
#25 0x00007ffff56c8134 in QObject::event(QEvent*) (this=0x19603c00, e=0x7fff24004a10) at kernel/qobject.cpp:1347
        mce = 0x7fff24004a10
        sender = {previous = 0x0, receiver = 0x19603c00, sender = 0x0, signal = -1}
#26 0x00007ffff65aed62 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x19603c00, e=0x7fff24004a10) at kernel/qapplication.cpp:3640
        consumed = false
        filtered = false
#27 0x00007ffff569d4e8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x19603c00, event=0x7fff24004a10) at kernel/qcoreapplication.cpp:1064
        selfRequired = true
        result = false
        cbdata = {0x19603c00, 0x7fff24004a10, 0x7fffffffd2ff}
        d = <optimized out>
        threadData = 0x1342890
        scopeLevelCounter = {threadData = 0x1342890}
#28 0x00007ffff569d6d2 in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1462
#29 0x00007ffff56a0854 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x1342890) at kernel/qcoreapplication.cpp:1821
        e = 0x7fff24004a10
        pe = <optimized out>
        r = 0x19603c00
        event_deleter = {d = 0x7fff24004a10}
        locker = {_M_device = 0x13428c0, _M_owns = false}
        startOffset = 0
        i = @0x13428b4: 2
        cleanup = {receiver = 0x0, event_type = 0, data = 0x1342890, exceptionCaught = true}
#30 0x00007ffff56a0aec in QCoreApplication::sendPostedEvents(QObject*, int) (receiver=<optimized out>, event_type=<optimized out>) at kernel/qcoreapplication.cpp:1680
        data = <optimized out>
#31 0x00007ffff56eeb07 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x1586df0) at kernel/qeventdispatcher_glib.cpp:277
        source = 0x1586df0
#32 0x00007ffff5315c7f in g_main_dispatch (context=0x7fffd8005010) at ../glib/gmain.c:3454
        dispatch = 0x7ffff56eeaf0 <postEventSourceDispatch(GSource*, GSourceFunc, gpointer)>
        prev_source = 0x0
        begin_time_nsec = 213831055256160
        was_in_call = 0
        user_data = 0x0
        callback = 0x0
        cb_funcs = 0x0
        cb_data = 0x0
        need_destroy = <optimized out>
        source = 0x1586df0
        current = 0x162a090
        i = 0
#33 g_main_context_dispatch (context=0x7fffd8005010) at ../glib/gmain.c:4172
#34 0x00007ffff536c118 in g_main_context_iterate.constprop.0 (context=0x7fffd8005010, block=1, dispatch=1, self=<optimized out>) at ../glib/gmain.c:4248
        max_priority = 0
        timeout = 0
        some_ready = 1
        nfds = 5
        allocated_nfds = <optimized out>
        fds = <optimized out>
        begin_time_nsec = 213831055247973
#35 0x00007ffff5312f00 in g_main_context_iteration (context=0x7fffd8005010, may_block=1) at ../glib/gmain.c:4313
        retval = <optimized out>
#36 0x00007ffff56ee5fa in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x1574780, flags=...) at kernel/qeventdispatcher_glib.cpp:423
        d = 0x153f550
        canWait = true
        savedFlags = {i = 0}
        result = <optimized out>
#37 0x00007ffff569bf3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffffffd630, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
        d = 0x220e66a0
        threadData = <optimized out>
        locker = {val = 20312920}
        ref = {d = 0x220e66a0, locker = @0x7fffffffd5b8, exceptionCaught = true}
        app = 0x7fffffffd6f0
#38 0x00007ffff56a4002 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
        threadData = 0x1342890
        eventLoop = {<QObject> = {_vptr.QObject = 0x7ffff595db68 <vtable for QEventLoop+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7ffff58518c0 <qt_meta_stringdata_QObject>, data = 0x7ffff58517a0 <qt_meta_data_QObject>, static_metacall = 0x7ffff56ce330 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x220e66a0}, static staticQtMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7ffff5854860 <qt_meta_stringdata_Qt>, data = 0x7ffff58519e0 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff59553e0 <QObject::staticMetaObject>}, stringdata = 0x7ffff584b660 <qt_meta_stringdata_QEventLoop>, data = 0x7ffff584b600 <qt_meta_data_QEventLoop>, static_metacall = 0x7ffff569bb70 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}
        returnCode = <optimized out>
#39 0x00007ffff5d5fad0 in QGuiApplication::exec() () at kernel/qguiapplication.cpp:1863
#40 0x00007ffff65aecd9 in QApplication::exec() () at kernel/qapplication.cpp:2832
#41 0x0000000000584ac4 in (anonymous namespace)::runMixxx (args=<optimized out>, pApp=0x7fffffffd6f0) at /home/swiftb0y/Sourcerepositories/mixxx/src/main.cpp:74
        mainWindow = Python Exception <class 'gdb.error'>: No type named QHashNode<class ControlObject *, struct QHashDummyValue>.
{<QMainWindow> = {<QWidget> = {<QObject> = {_vptr.QObject = 0x12b9c30 <vtable for MixxxMainWindow+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7ffff58518c0 <qt_meta_stringdata_QObject>, data = 0x7ffff58517a0 <qt_meta_data_QObject>, static_metacall = 0x7ffff56ce330 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x1620620}, static staticQtMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7ffff5854860 <qt_meta_stringdata_Qt>, data = 0x7ffff58519e0 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, <QPaintDevice> = {_vptr.QPaintDevice = 0x12b9de8 <vtable for MixxxMainWindow+456>, painters = 0, reserved = 0x0}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff59553e0 <QObject::staticMetaObject>}, stringdata = 0x7ffff6972540 <qt_meta_stringdata_QWidget>, data = 0x7ffff6971e60 <qt_meta_data_QWidget>, static_metacall = 0x7ffff65f0180 <QWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, data = 0x1620740}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff6ad6840 <QWidget::staticMetaObject>}, stringdata = 0x7ffff6994580 <qt_meta_stringdata_QMainWindow>, data = 0x7ffff6994380 <qt_meta_data_QMainWindow>, static_metacall = 0x7ffff6709cf0 <QMainWindow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x7ffff6ae0430 <qt_meta_extradata_QMainWindow>, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff6ae0400 <QMainWindow::staticMetaObject>}, stringdata = 0xfbba80 <qt_meta_stringdata_MixxxMainWindow>, data = 0xfbb820 <qt_meta_data_MixxxMainWindow>, static_metacall = 0x679570 <MixxxMainWindow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, m_pCoreServices = std::shared_ptr<class mixxx::CoreServices> (use count 2, weak count 0) = {get() = 0x1612d10}, m_pCentralWidget = 0x18761940, m_pLaunchImage = 0x0, m_pSkinLoader = std::shared_ptr<class mixxx::skin::SkinLoader> (use count 2, weak count 0) = {get() = 0x187e120}, m_pGuiTick = 0x18872e0, m_pVisualsManager = 0x1887840, m_pMenuBar = {m_ptr = 0x168a5f0}, m_supportsGlobalMenuBar = false, m_pDeveloperToolsDlg = 0x229373c0, m_pPrefDlg = 0x6bd2480, m_pKeywheel = {m_ptr = 0x0}, m_pLibraryExporter = std::unique_ptr<class mixxx::LibraryExporter> = {get() = 0x6b635f0}, m_toolTipsCfg = mixxx::TooltipsPreference::TOOLTIPS_ON, m_inhibitScreensaver = mixxx::ScreenSaverPreference::PREVENT_OFF, m_skinCreatedControls = QSet<class ControlObject *> (size = 53)}
        pCoreServices = std::shared_ptr<mixxx::CoreServices> (use count 2, weak count 0) = {get() = 0x1612d10}
        exitCode = <optimized out>
        console = {<No data fields>}
        args = <optimized out>
        app = {<QApplication> = {<QGuiApplication> = {<QCoreApplication> = {<QObject> = {_vptr.QObject = 0x12b8e18 <vtable for MixxxApplication+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7ffff58518c0 <qt_meta_stringdata_QObject>, data = 0x7ffff58517a0 <qt_meta_data_QObject>, static_metacall = 0x7ffff56ce330 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x13d42d0}, static staticQtMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7ffff5854860 <qt_meta_stringdata_Qt>, data = 0x7ffff58519e0 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff59553e0 <QObject::staticMetaObject>}, stringdata = 0x7ffff584bd40 <qt_meta_stringdata_QCoreApplication>, data = 0x7ffff584bc20 <qt_meta_data_QCoreApplication>, static_metacall = 0x7ffff569ed90 <QCoreApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, static self = 0x7fffffffd6f0}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff595dd00 <QCoreApplication::staticMetaObject>}, stringdata = 0x7ffff6118600 <qt_meta_stringdata_QGuiApplication>, data = 0x7ffff6118380 <qt_meta_data_QGuiApplication>, static_metacall = 0x7ffff5d60ae0 <QGuiApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff6219b40 <QGuiApplication::staticMetaObject>}, stringdata = 0x7ffff696e8c0 <qt_meta_stringdata_QApplication>, data = 0x7ffff696e740 <qt_meta_data_QApplication>, static_metacall = 0x7ffff65b28e0 <QApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff6ad54a0 <QApplication::staticMetaObject>}, stringdata = 0xfae560 <qt_meta_stringdata_MixxxApplication>, data = 0xfae520 <qt_meta_data_MixxxApplication>, static_metacall = 0x5e4fb0 <MixxxApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, m_rightPressedButtons = 0, m_pTouchShift = 0x0}
        exitCode = <optimized out>
        __PRETTY_FUNCTION__ = "int main(int, char**)"
#42 main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/swiftb0y/Sourcerepositories/mixxx/src/main.cpp:202
        console = {<No data fields>}
        args = <optimized out>
        app = {<QApplication> = {<QGuiApplication> = {<QCoreApplication> = {<QObject> = {_vptr.QObject = 0x12b8e18 <vtable for MixxxApplication+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7ffff58518c0 <qt_meta_stringdata_QObject>, data = 0x7ffff58517a0 <qt_meta_data_QObject>, static_metacall = 0x7ffff56ce330 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x13d42d0}, static staticQtMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7ffff5854860 <qt_meta_stringdata_Qt>, data = 0x7ffff58519e0 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff59553e0 <QObject::staticMetaObject>}, stringdata = 0x7ffff584bd40 <qt_meta_stringdata_QCoreApplication>, data = 0x7ffff584bc20 <qt_meta_data_QCoreApplication>, static_metacall = 0x7ffff569ed90 <QCoreApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, static self = 0x7fffffffd6f0}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff595dd00 <QCoreApplication::staticMetaObject>}, stringdata = 0x7ffff6118600 <qt_meta_stringdata_QGuiApplication>, data = 0x7ffff6118380 <qt_meta_data_QGuiApplication>, static_metacall = 0x7ffff5d60ae0 <QGuiApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff6219b40 <QGuiApplication::staticMetaObject>}, stringdata = 0x7ffff696e8c0 <qt_meta_stringdata_QApplication>, data = 0x7ffff696e740 <qt_meta_data_QApplication>, static_metacall = 0x7ffff65b28e0 <QApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff6ad54a0 <QApplication::staticMetaObject>}, stringdata = 0xfae560 <qt_meta_stringdata_MixxxApplication>, data = 0xfae520 <qt_meta_data_MixxxApplication>, static_metacall = 0x5e4fb0 <MixxxApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, m_rightPressedButtons = 0, m_pTouchShift = 0x0}
        exitCode = <optimized out>
        __PRETTY_FUNCTION__ = "int main(int, char**)"

Version

2.4.0

OS

Fedora 37

daschuer commented 1 year ago

I can confirm this:

 [Main] fatal /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:544 ASSERT failure in QList<T>::at: "index out of range", file /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h, line 544
Swiftb0y commented 1 year ago

While investigating this, I noticed an architectural flaw that we should discuss. The Equalizer effect is currently modeled as an EffectChain, so we can load arbitrary effect presets into it. I'm not sure if that's desirable because it conflicts with the "Equalizer Plugin" option in the Equalizer Preferences.

daschuer commented 1 year ago

Loading any effect to the EQ Rack is a feature. It allows for instance to use a LV2 EQ. There is a checkbox to disable this feature, because it is quite advanced.

Do you mean that it is a conflict that one can use the CO interface to bypass this checkbox?

Swiftb0y commented 1 year ago

Mhmm its not super well thought out in cases where the effect is not actually an EQ. The simulated band gain will still be applied to the waveform in those cases.

There is a checkbox to disable this feature, because it is quite advanced. Do you mean that it is a conflict that one can use the CO interface to bypass this checkbox?

Do you mean "Only allow EQ Knobs to control EQ-specific effects"? Then yes, you can load any Quick Effect Chain Preset to the EQ regardless of that checkbox.

daschuer commented 1 year ago

The simulated band gain will still be applied to the waveform in those cases.

No, this is controlled by pManifest->setIsMixingEQ(true);

Then yes, you can load any Quick Effect Chain Preset to the EQ regardless of that checkbox.

Normally the user has not the required controls visible. But anyway, there is room for improvements.

Swiftb0y commented 1 year ago

Well the issue is that only the actual preferences dialog sets that if you load an effectChain via EffectChain::loadChainPreset it will never check that.

Edit: Fixed as part of #11424

Swiftb0y commented 1 year ago

Fixed by #11424