Application: kdevelop (6.0.240800 (24.08.0)) Qt Version: 6.7.2 Frameworks Version: 6.5.0 Operating System: Linux 6.10.6-200.fc40.x86_64 x86_64 Windowing System: Wayland Distribution: "Fedora Linux 40 (KDE Plasma)" DrKonqi: 6.1.4 [CoredumpBackend] -- Information about the crash: a procedure that will cause a crash: - choose a variable - move the mouse cursor over it - click on 'show use' only the new version 6.0.240800 (24.08.0) crashes version 5.14.24052 24.05.2 is OK The crash can be reproduced every time. -- Backtrace (Reduced): #4 0x00007f83e719dba5 in QBoxLayout::itemAt(int) const () at /lib64/libQt6Widgets.so.6 #5 0x00007f83e3b7eea6 in KDevelop::NavigatableWidgetList::items() const () at /lib64/libKDevPlatformLanguage.so.60 #6 0x00007f83e3b7f25f in KDevelop::UsesWidget::countAllUses() const () at /lib64/libKDevPlatformLanguage.so.60 #7 0x00007f83e3b7f390 in KDevelop::UsesWidget::headerLineText() const () at /lib64/libKDevPlatformLanguage.so.60 #8 0x00007f83e3b7f70f in KDevelop::UsesWidget::redrawHeaderLine() () at /lib64/libKDevPlatformLanguage.so.60 Reported using DrKonqi
Created attachment 172977 [details] New crash information added by DrKonqi DrKonqi auto-attaching complete backtrace.
Cannot reproduce and the KDevelop code at the end of the backtrace looks OK to me. Have you tried showing uses of a variable in another (small) project? Have you tried clearing the cache?
(In reply to Igor Kushnir from comment #2) > Nelze reprodukovat a kód KDevelop na konci backtrace mi připadá v pořádku. > > Zkusili jste ukázat použití proměnné v jiném (malém) projektu? Zkoušel jsi > vymazat mezipaměť? It's true that according to backtrace it looks more like a problem in qt. It's crashing hard. At least 7 times out of 10. But only on a large project. On a small project, it's not a problem. I tried clearing the cache, of course. I also tried a custom compile to rule out a build error. But it still crashed. And version 24.05.2 is still without problems. If further plasma/qt updates don't help, I'll have to find the commit that caused the problem.
(In reply to painless roaster from comment #3) > If further plasma/qt updates don't help, I'll have to find the commit that > caused the problem. You can start by installing KDevelop and Qt debug symbols to obtain a more detailed backtrace, possibly with deeper call stack and values of function arguments. Should be easy with https://fedoraproject.org/wiki/Debuginfod
this is where it crashes: (gdb) frame 0 #0 0x00007ffff759dba5 in QBoxLayout::itemAt (this=0x5555596e6c10, index=0) at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/widgets/kernel/qboxlayout.cpp:692 692 return index >= 0 && index < d->list.size() ? d->list.at(index)->item : nullptr; (gdb) l 687 \reimp 688 */ 689 QLayoutItem *QBoxLayout::itemAt(int index) const 690 { 691 Q_D(const QBoxLayout); 692 return index >= 0 && index < d->list.size() ? d->list.at(index)->item : nullptr; 693 } 694 695 /*! 696 \reimp (gdb) p d->list $6 = {<QListSpecialMethods<QBoxLayoutItem*>> = {<QListSpecialMethodsBase<QBoxLayoutItem*>> = {<No data fields>}, <No data fields>}, d = {d = 0x555559661530, ptr = 0x555559661540, size = 1}} (gdb) p d->list.d $7 = {d = 0x555559661530, ptr = 0x555559661540, size = 1} (gdb) p d->list.d.d $8 = (QArrayDataPointer<QBoxLayoutItem*>::Data *) 0x555559661530 (gdb) p *d->list.d.d $9 = {<QArrayData> = {ref_ = {_q_value = std::atomic<int> = { 1 }}, flags = {i = 0}, alloc = 2}, <No data fields>} (gdb) p d->list.d.ptr $10 = (QBoxLayoutItem **) 0x555559661540 (gdb) p *d->list.d.ptr $11 = (QBoxLayoutItem *) 0x3f46 (gdb) p **d->list.d.ptr Cannot access memory at address 0x3f46
Comment on attachment 172977 [details] New crash information added by DrKonqi and here's the full backtrace (gdb) bt full #0 0x00007ffff759dba5 in QBoxLayout::itemAt (this=0x55555734afc0, index=0) at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/widgets/kernel/qboxlayout.cpp:692 d = 0x555557109b90 #1 0x00007ffff3f7eea6 in KDevelop::NavigatableWidgetList::items (this=this@entry=0x55555952f440) at /usr/src/debug/kdevelop-24.08.0-1.fc40.x86_64/kdevplatform/language/duchain/navigation/useswidget.cpp:317 widgetItem = <optimized out> a = 0 ret = {<QListSpecialMethods<QWidget*>> = {<QListSpecialMethodsBase<QWidget*>> = {<No data fields>}, <No data fields>}, d = {d = 0x0, ptr = 0x0, size = 0}} #2 0x00007ffff3f7f25f in KDevelop::UsesWidget::countAllUses (this=this@entry=0x55555952f440) at /usr/src/debug/kdevelop-24.08.0-1.fc40.x86_64/kdevplatform/language/duchain/navigation/useswidget.cpp:635 totalUses = 0 items = {<QListSpecialMethods<QWidget*>> = {<QListSpecialMethodsBase<QWidget*>> = {<No data fields>}, <No data fields>}, d = {d = 0x0, ptr = 0x0, size = 0}} #3 0x00007ffff3f7f390 in KDevelop::UsesWidget::headerLineText (this=0x55555952f440) at /usr/include/qt6/QtCore/qbytearrayview.h:68 #4 0x00007ffff3f7f70f in KDevelop::UsesWidget::redrawHeaderLine (this=<optimized out>) at /usr/src/debug/kdevelop-24.08.0-1.fc40.x86_64/kdevplatform/language/duchain/navigation/useswidget.cpp:620 #5 0x00007ffff3f840c2 in KDevelop::UsesWidget::UsesWidgetCollector::processUses (this=0x5555594eef90, topContext=Python Exception <class 'gdb.MemoryError'>: Cannot access memory at address 0x0 #6 KDevelop::UsesWidget::UsesWidgetCollector::processUses (this=this@entry=0x5555594eef90, topContext=...) at /usr/src/debug/kdevelop-24.08.0-1.fc40.x86_64/kdevplatform/language/duchain/navigation/useswidget.cpp:712 lock = {m_lock = <optimized out>, m_locked = <optimized out>, m_timeout = <optimized out>} widget = <optimized out> toBack = <optimized out> doc = <optimized out> toFront = <optimized out> qt_category = {static IsOutputEnabled = true, category = <optimized out>, control = <optimized out>} #7 0x00007ffff3f8cc02 in KDevelop::UsesCollector::updateReady (this=0x5555594eef90, url=..., topContext=...) at /usr/src/debug/kdevelop-24.08.0-1.fc40.x86_64/kdevplatform/language/duchain/navigation/usescollector.cpp:438 lock = {m_lock = 0x7ffff4876380 <_ZZN13QGlobalStaticIN14QtGlobalStatic6HolderIN8KDevelop12_GLOBAL__N_122Q_QGS_sdDUChainPrivateEEEE8instanceEvE6holder.lto_priv.0+64>, m_locked = false, m_timeout = 0} indexed = {m_index = 800} imports = {<QListSpecialMethods<KDevelop::ReferencedTopDUContext>> = {<QListSpecialMethodsBase<KDevelop::ReferencedTopDUContext>> = {<No data fields>}, <No data fields>}, d = {d = 0x7fff4d555860, ptr = 0x4c, size = 93825015805568}} importedParentContexts = {<QListSpecialMethods<KDevelop::DUContext::Import>> = {<QListSpecialMethodsBase<KDevelop::DUContext::Import>> = {<No data fields>}, <No data fields>}, d = {d = 0x7fff0001130f, ptr = 0x7ffff3ebf343 <KDevelop::DUChain::refCountUp(KDevelop::TopDUContext*)+131>, size = 0}} #8 0x00007ffff3f8c584 in KDevelop::UsesCollector::updateReady (this=this@entry=0x5555594eef90, url=..., topContext=...) at /usr/src/debug/kdevelop-24.08.0-1.fc40.x86_64/kdevplatform/language/duchain/navigation/usescollector.cpp:458 url = {m_index = 70415} import = @0x55555951d2d0: {m_topContext = 0x7fff4d555860} __for_range = @0x7fffffffc840: {<QListSpecialMethods<KDevelop::ReferencedTopDUContext>> = {<QListSpecialMethodsBase<KDevelop::ReferencedTopDUContext>> = {<No data fields>}, <No data fields>}, d = {d = 0x55555951d270, ptr = 0x55555951d280, size = 16}} __for_begin = {i = <optimized out>} __for_end = {i = <optimized out>} lock = {m_lock = 0x7ffff4876380 <_ZZN13QGlobalStaticIN14QtGlobalStatic6HolderIN8KDevelop12_GLOBAL__N_122Q_QGS_sdDUChainPrivateEEEE8instanceEvE6holder.lto_priv.0+64>, m_locked = false, m_timeout = 0} indexed = {m_index = 1023} imports = {<QListSpecialMethods<KDevelop::ReferencedTopDUContext>> = {<QListSpecialMethodsBase<KDevelop::ReferencedTopDUContext>> = {<No data fields>}, <No data fields>}, d = {d = 0x55555951d270, ptr = 0x55555951d280, size = 16}} importedParentContexts = {<QListSpecialMethods<KDevelop::DUContext::Import>> = {<QListSpecialMethodsBase<KDevelop::DUContext::Import>> = {<No data fields>}, <No data fields>}, d = {d = 0x5555595602f0, ptr = 0x555559560300, size = 16}} #9 0x00007ffff3f8ce98 in KDevelop::UsesCollector::qt_static_metacall (_o=_o@entry=0x5555594eef90, _c=_c@entry=QMetaObject::InvokeMetaMethod, _id=_id@entry=3, _a=_a@entry=0x7fffffffcb20) at /usr/src/debug/kdevelop-24.08.0-1.fc40.x86_64/redhat-linux-build/kdevplatform/language/KDevPlatformLanguage_autogen/include/moc_usescollector.cpp:122 _t = 0x5555594eef90 #10 0x00007ffff61ad8b1 in QMetaMethodInvoker::invokeImpl (self=..., target=target@entry=0x5555594eef90, connectionType=connectionType@entry=Qt::DirectConnection, paramCount=paramCount@entry=3, parameters=parameters@entry=0x7fffffffcb20, typeNames=0x7fffffffcb38, metaTypes=0x7fffffffcb50) at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/corelib/kernel/qmetaobject.cpp:2754 object = <optimized out> priv = <optimized out> MetaTypesAreOptional = <optimized out> methodMetaTypes = <optimized out> param = 0x7fffffffcb20 checkTypesAreCompatible = {__priv = <optimized out>, __typeNames = <optimized out>, __metaTypes = <optimized out>, __methodMetaTypes = <optimized out>} currentThreadId = 0x0 objectThread = 0x0 receiverInSameThread = {__currentThreadId = <optimized out>, __objectThread = <optimized out>, __object = <optimized out>} idx_relative = 3 idx_offset = <optimized out> callFunction = 0x7ffff3f8cd30 <KDevelop::UsesCollector::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)> #11 0x00007ffff61ae9dd in QMetaObject::invokeMethodImpl (obj=obj@entry=0x5555594eef90, member=member@entry=0x7ffff4028235 "updateReady", type=type@entry=Qt::DirectConnection, paramCount=paramCount@entry=3, parameters=parameters@entry=0x7fffffffcb20, typeNames=typeNames@entry=0x--Type <RET> for more, q to quit, c to continue without paging--c 7fffffffcb38, metaTypes=0x7fffffffcb50) at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/corelib/kernel/qmetaobject.cpp:1604 m = {mobj = 0x7ffff4071680 <KDevelop::UsesCollector::staticMetaObject>, data = {d = 0x7ffff4034a20 <_ZL52qt_meta_data_CLASSKDevelopSCOPEUsesCollectorENDCLASS.lto_priv.0+128>}} r = <optimized out> i = 3 priv = 0x7ffff40349a0 <_ZL52qt_meta_data_CLASSKDevelopSCOPEUsesCollectorENDCLASS.lto_priv.0> name = {m_size = 11, m_data = 0x7ffff4028235 "updateReady"} meta = 0x7ffff4071680 <KDevelop::UsesCollector::staticMetaObject> #12 0x00007ffff3ec6574 in QMetaObject::invokeMethod<void, QMetaMethodArgument, QMetaMethodArgument> (obj=0x5555594eef90, member=0x7ffff4028235 "updateReady", c=Qt::DirectConnection, r=...) at /usr/include/qt6/QtCore/qobjectdefs.h:376 h = {parameters = {_M_elems = {0x0, 0x5555597d2fcc, 0x7fffffffcb08}}, typeNames = {_M_elems = {0x0, 0x7ffff4028015 "KDevelop::IndexedString", 0x7ffff402a018 "KDevelop::ReferencedTopDUContext"}}, metaTypes = {_M_elems = {0x0, 0x7ffff4078600 <QtPrivate::QMetaTypeInterfaceWrapper<KDevelop::IndexedString>::metaType>, 0x7ffff4078580 <QtPrivate::QMetaTypeInterfaceWrapper<KDevelop::ReferencedTopDUContext>::metaType>}}} #13 QMetaObject::invokeMethod<QMetaMethodArgument, QMetaMethodArgument> (obj=0x5555594eef90, member=0x7ffff4028235 "updateReady", c=Qt::DirectConnection) at /usr/include/qt6/QtCore/qobjectdefs.h:389 r = {<QMetaMethodReturnArgument> = {metaType = <optimized out>, name = <optimized out>, data = <optimized out>}, <No data fields>} #14 KDevelop::DUChain::updateContextForUrl (this=<optimized out>, document=..., minFeatures=..., notifyReady=0x5555594eef90, priority=1) at /usr/src/debug/kdevelop-24.08.0-1.fc40.x86_64/kdevplatform/language/duchain/duchain.cpp:1882 lock = {m_lock = 0x7ffff4876380 <_ZZN13QGlobalStaticIN14QtGlobalStatic6HolderIN8KDevelop12_GLOBAL__N_122Q_QGS_sdDUChainPrivateEEEE8instanceEvE6holder.lto_priv.0+64>, m_locked = false, m_timeout = 0} standardContext = <optimized out> backgroundParser = <optimized out> listenerAdded = <optimized out> #15 0x00007ffff3f8a932 in KDevelop::UsesCollector::startCollecting (this=<optimized out>) at /usr/include/qt6/QtCore/qflags.h:74 file = @0x5555597d2fcc: {m_index = 83533} __for_range = @0x7fffffffcc90: {q_hash = {d = 0x5555594c84a0}} __for_begin = {i = {i = {d = <optimized out>, bucket = <optimized out>}}} __for_end = {i = {i = {d = <optimized out>, bucket = <optimized out>}}} allDeclarations = {q_hash = {d = 0x5555594bfe30}} collected = {q_hash = {d = 0x5555594b92a0}} currentFeaturesManipulated = {q_hash = {d = 0x5555594d4740}} decls = {<QListSpecialMethods<KDevelop::Declaration*>> = {<QListSpecialMethodsBase<KDevelop::Declaration*>> = {<No data fields>}, <No data fields>}, d = {d = 0x555559743fb0, ptr = 0x555559743fc0, size = 1}} checker = {m_collector = @0x5555594eef90} file = <optimized out> rootFiles = {q_hash = {d = 0x5555594c84a0}} candidateTopContexts = {<QListSpecialMethods<KDevelop::ReferencedTopDUContext>> = {<QListSpecialMethodsBase<KDevelop::ReferencedTopDUContext>> = {<No data fields>}, <No data fields>}, d = {d = 0x5555594bfe60, ptr = 0x5555594bfe70, size = 2}} visited = {q_hash = {d = 0x555558fe2560}} allFiles = {q_hash = {d = 0x555559780c50}} decl = <optimized out> lock = {m_lock = 0x7ffff4876380 <_ZZN13QGlobalStaticIN14QtGlobalStatic6HolderIN8KDevelop12_GLOBAL__N_122Q_QGS_sdDUChainPrivateEEEE8instanceEvE6holder.lto_priv.0+64>, m_locked = true, m_timeout = 0} #16 0x00007ffff3f81a72 in KDevelop::UsesWidget::UsesWidget (this=0x55555952f440, declaration=<optimized out>, customCollector=..., this=<optimized out>, declaration=<optimized out>, customCollector=<optimized out>) at /usr/include/qt6/QtCore/qsharedpointer_impl.h:274 lock = {m_lock = 0x7ffff4876380 <_ZZN13QGlobalStaticIN14QtGlobalStatic6HolderIN8KDevelop12_GLOBAL__N_122Q_QGS_sdDUChainPrivateEEEE8instanceEvE6holder.lto_priv.0+64>, m_locked = true, m_timeout = 0} lock = {m_lock = <optimized out>, m_locked = <optimized out>, m_timeout = <optimized out>} #17 0x00007ffff3f74f2f in KDevelop::UsesNavigationContext::UsesNavigationContext (this=0x5555594da920, declaration=..., previousContext=<optimized out>, this=<optimized out>, declaration=..., previousContext=<optimized out>) at /usr/src/debug/kdevelop-24.08.0-1.fc40.x86_64/kdevplatform/language/duchain/navigation/usesnavigationcontext.cpp:21 #18 0x00007ffff3f6f652 in KDevelop::AbstractNavigationContext::execute (this=this@entry=0x5555594b5b40, action=...) at /usr/src/debug/kdevelop-24.08.0-1.fc40.x86_64/kdevplatform/language/duchain/navigation/abstractnavigationcontext.cpp:202 d = <optimized out> #19 0x00007fffc170475b in ContextBrowserPlugin::showUsesDelayed (this=<optimized out>, declaration=...) at /usr/src/debug/kdevelop-24.08.0-1.fc40.x86_64/plugins/contextbrowser/contextbrowser.cpp:386 nextContext = {d = 0x7fffffffd130} decl = <optimized out> widget = {wp = {d = <optimized out>, value = <optimized out>}} lock = {m_lock = 0x7ffff4876380 <_ZZN13QGlobalStaticIN14QtGlobalStatic6HolderIN8KDevelop12_GLOBAL__N_122Q_QGS_sdDUChainPrivateEEEE8instanceEvE6holder.lto_priv.0+64>, m_locked = true, m_timeout = 0} toolView = <optimized out> view = <optimized out> lock = {m_lock = <optimized out>, m_locked = <optimized out>, m_timeout = <optimized out>} decl = <optimized out> toolView = <optimized out> view = <optimized out> widget = {wp = {d = <optimized out>, value = <optimized out>}} nextContext = {d = <optimized out>} #20 ContextBrowserPlugin::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at /usr/src/debug/kdevelop-24.08.0-1.fc40.x86_64/redhat-linux-build/plugins/contextbrowser/kdevcontextbrowser_autogen/include/moc_contextbrowser.cpp:294 _t = <optimized out> #21 0x00007ffff61edd4b in QObject::event (this=0x5555555f3350, e=0x7fffbc001ba0) at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/corelib/kernel/qobject.cpp:1452 mce = 0x7fffbc001ba0 connections = <optimized out> sender = {previous = 0x0, receiver = 0x5555555f3350, sender = 0x0, signal = -1} #22 0x00007ffff758b218 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5555555f3350, e=0x7fffbc001ba0) at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/widgets/kernel/qapplication.cpp:3287 consumed = false filtered = false #23 0x00007ffff6196dc8 in QCoreApplication::notifyInternal2 (receiver=0x5555555f3350, event=0x7fffbc001ba0) at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1142 selfRequired = <optimized out> result = false cbdata = {0x5555555f3350, 0x7fffbc001ba0, 0x7fffffffd17f} d = <optimized out> threadData = 0x5555555e1a70 scopeLevelCounter = {threadData = 0x5555555e1a70} #24 0x00007ffff619702d in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1583 #25 0x00007ffff619ab91 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x5555555e1a70) at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1940 e = 0x7fffbc001ba0 pe = <optimized out> r = <optimized out> relocker = {m_func = {__locker = <optimized out>}, m_invoke = <optimized out>} event_deleter = {d = 0x7fffbc001ba0} locker = {_M_device = 0x5555555e1ac8, _M_owns = false} startOffset = 0 i = @0x5555555e1ab8: 1 cleanup = {receiver = <optimized out>, event_type = <optimized out>, data = <optimized out>, exceptionCaught = <optimized out>} #26 0x00007ffff619ae3d in QCoreApplication::sendPostedEvents (receiver=<optimized out>, event_type=<optimized out>) at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1797 data = <optimized out> #27 0x00007ffff64858ef in postEventSourceDispatch (s=0x5555555e7070) at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:244 source = 0x5555555e7070 #28 0x00007ffff2de3e8c in g_main_dispatch (context=0x7fffc4000f00) at ../glib/gmain.c:3344 dispatch = 0x7ffff64858d0 <postEventSourceDispatch(GSource*, GSourceFunc, gpointer)> prev_source = 0x0 begin_time_nsec = 13641485030257 was_in_call = 0 user_data = 0x0 callback = 0x0 cb_funcs = 0x0 cb_data = 0x0 need_destroy = <optimized out> source = 0x5555555e7070 current = 0x555555c74de0 i = 0 __func__ = {<optimized out> <repeats 16 times>} #29 g_main_context_dispatch_unlocked (context=0x7fffc4000f00) at ../glib/gmain.c:4152 #30 0x00007ffff2e45c98 in g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x7fffc4000f00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4217 max_priority = 0 timeout = 0 some_ready = 1 nfds = 10 allocated_nfds = <optimized out> fds = 0x55555923aa20 begin_time_nsec = 13641485024177 #31 0x00007ffff2de5383 in g_main_context_iteration (context=0x7fffc4000f00, may_block=1) at ../glib/gmain.c:4282 retval = <optimized out> #32 0x00007ffff64850a3 in QEventDispatcherGlib::processEvents (this=0x555555605890, flags=...) at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:394 d = 0x55555560ad60 canWait = true savedFlags = {i = 0} result = <optimized out> #33 0x00007ffff61a3b03 in QEventLoop::exec (this=this@entry=0x7fffffffd510, flags=..., flags@entry=...) at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/corelib/global/qflags.h:34 d = 0x555556e83cd0 threadData = <optimized out> locker = {m_mutex = 0x5555555e1ba8, m_isLocked = false} ref = {d = <optimized out>, locker = <optimized out>, exceptionCaught = <optimized out>} app = <optimized out> #34 0x00007ffff619f9bc in QCoreApplication::exec () at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/corelib/global/qflags.h:74 threadData = 0x5555555e1a70 eventLoop = {<QObject> = {_vptr.QObject = 0x7ffff6688f60 <vtable for QEventLoop+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7ffff64dbc40 <(anonymous namespace)::qt_meta_stringdata_CLASSQObjectENDCLASS>, data = 0x7ffff64dbb20 <qt_meta_data_CLASSQObjectENDCLASS>, static_metacall = 0x7ffff61f9c20 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, metaTypes = 0x7ffff668aa60 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_stringdata_CLASSQObjectENDCLASS_t, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QObject, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QObject*, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QString const&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QObject*, std::integral_constant<bool, false> > >>, extradata = 0x0}}, d_ptr = {d = 0x555556e83cd0}}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff6684ea0 <QObject::staticMetaObject>}, stringdata = 0x7ffff64d92a0 <(anonymous namespace)::qt_meta_stringdata_CLASSQEventLoopENDCLASS>, data = 0x7ffff64d91a0 <qt_meta_data_CLASSQEventLoopENDCLASS>, static_metacall = 0x7ffff61a36e0 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, metaTypes = 0x7ffff6688e80 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_stringdata_CLASSQEventLoopENDCLASS_t, QtPrivate::TypeAndForceComplete<QFlags<QEventLoop::ProcessEventsFlag>, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QEventLoop, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<int, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> > >>, extradata = 0x0}}} returnCode = <optimized out> #35 0x00007ffff69d67ed in QGuiApplication::exec () at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/gui/kernel/qguiapplication.cpp:1926 #36 0x00007ffff758b189 in QApplication::exec () at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/widgets/kernel/qapplication.cpp:2555 #37 0x0000555555562134 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kdevelop-24.08.0-1.fc40.x86_64/app/main.cpp:822 timer = {t1 = -9223372036854775808, t2 = -9223372036854775808} debugArgs = {<QListSpecialMethods<QString>> = {<QListSpecialMethodsBase<QString>> = {<No data fields>}, <No data fields>}, d = {d = 0x0, ptr = 0x0, size = 0}} debugeeName = {d = {d = 0x0, ptr = 0x0, size = 0}, static _empty = 0 u'\000'} app = {<QApplication> = {<QGuiApplication> = {<QCoreApplication> = {<QObject> = {_vptr.QObject = 0x55555556c688 <vtable for KDevelopApplication+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7ffff64dbc40 <(anonymous namespace)::qt_meta_stringdata_CLASSQObjectENDCLASS>, data = 0x7ffff64dbb20 <qt_meta_data_CLASSQObjectENDCLASS>, static_metacall = 0x7ffff61f9c20 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, metaTypes = 0x7ffff668aa60 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_stringdata_CLASSQObjectENDCLASS_t, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QObject, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QObject*, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QString const&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QObject*, std::integral_constant<bool, false> > >>, extradata = 0x0}}, d_ptr = {d = 0x55555558a450}}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff6684ea0 <QObject::staticMetaObject>}, stringdata = 0x7ffff64d7880 <(anonymous namespace)::qt_meta_stringdata_CLASSQCoreApplicationENDCLASS>, data = 0x7ffff64d76e0 <qt_meta_data_CLASSQCoreApplicationENDCLASS>, static_metacall = 0x7ffff6198fe0 <QCoreApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, metaTypes = 0x7ffff6688ae0 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_stringdata_CLASSQCoreApplicationENDCLASS_t, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<bool, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QCoreApplication, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<int, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> > >>, extradata = 0x0}}, static self = 0x7fffffffd680}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff6688c00 <QCoreApplication::staticMetaObject>}, stringdata = 0x7ffff7012fe0 <(anonymous namespace)::qt_meta_stringdata_CLASSQGuiApplicationENDCLASS>, data = 0x7ffff7012ce0 <qt_meta_data_CLASSQGuiApplicationENDCLASS>, static_metacall = 0x7ffff69df3a0 <QGuiApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, metaTypes = 0x7ffff712ce80 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_stringdata_CLASSQGuiApplicationENDCLASS_t, QtPrivate::TypeAndForceComplete<QIcon, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<Qt::LayoutDirection, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<bool, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QScreen*, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QGuiApplication, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QScreen*, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QScreen*, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QScreen*, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QObject*, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QWindow*, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<Qt::ApplicationState, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<Qt::LayoutDirection, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QSessionManager&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QSessionManager&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QPalette const&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QFont const&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<long long, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QObject*, std::integral_constant<bool, false> > >>, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x55555556c5a0 <QGuiApplication::staticMetaObject>}, stringdata = 0x7ffff7a1d2a0 <(anonymous namespace)::qt_meta_stringdata_CLASSQApplicationENDCLASS>, data = 0x7ffff7a1d100 <qt_meta_data_CLASSQApplicationENDCLASS>, static_metacall = 0x7ffff7591210 <QApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, metaTypes = 0x7ffff7b63900 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_stringdata_CLASSQApplicationENDCLASS_t, QtPrivate::TypeAndForceComplete<int, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<int, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<int, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<int, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<int, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<int, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<bool, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QApplication, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QWidget*, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QWidget*, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QString const&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<bool const, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> > >>, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff7b639a0 <QApplication::staticMetaObject>}, stringdata = 0x55555556ae60 <(anonymous namespace)::qt_meta_stringdata_CLASSKDevelopApplicationENDCLASS>, data = 0x55555556a300 <qt_meta_data_CLASSKDevelopApplicationENDCLASS>, static_metacall = 0x555555564730 <KDevelopApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, metaTypes = 0x55555556c510 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_stringdata_CLASSKDevelopApplicationENDCLASS_t, QtPrivate::TypeAndForceComplete<KDevelopApplication, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QSessionManager&, std::integral_constant<bool, false> > >>, extradata = 0x0}}} aboutData = {d = std::unique_ptr<KAboutDataPrivate> = {get() = 0x55555571c660}} parser = {d = 0x555555c4b760} initialFiles = {<QListSpecialMethods<UrlInfo>> = {<QListSpecialMethodsBase<UrlInfo>> = {<No data fields>}, <No data fields>}, d = {d = <optimized out>, ptr = <optimized out>, size = <optimized out>}} initialDirectories = {<QListSpecialMethods<UrlInfo>> = {<QListSpecialMethodsBase<UrlInfo>> = {<No data fields>}, <No data fields>}, d = {d = <optimized out>, ptr = <optimized out>, size = <optimized out>}} files = {<QListSpecialMethods<QString>> = {<QListSpecialMethodsBase<QString>> = {<No data fields>}, <No data fields>}, d = {d = 0x0, ptr = 0x0, size = 0}} availableSessionInfos = {<QListSpecialMethods<KDevelop::SessionInfo>> = {<QListSpecialMethodsBase<KDevelop::SessionInfo>> = {<No data fields>}, <No data fields>}, d = {d = 0x555555c93680, ptr = 0x555555c93690, size = 1}} session = {d = {d = 0x0, ptr = 0x0, size = 0}, static _empty = 0 u'\000'} nRunningSessions = <optimized out> core = 0x555555fdc920 fetchUrlStrings = {<QListSpecialMethods<QString>> = {<QListSpecialMethodsBase<QString>> = {<No data fields>}, <No data fields>}, d = {d = 0x0, ptr = 0x0, size = 0}} debugStr = {d = {d = 0x0, ptr = 0x555555568912 u"debug", size = 5}, static _empty = 0 u'\000'}
Looks like a dangling pointer or memory corruption. > I also tried a custom compile to rule out a build error. But it still crashed. And version 24.05.2 is still without problems. > If further plasma/qt updates don't help, I'll have to find the commit that caused the problem. Just created a tag https://invent.kde.org/kdevelop/kdevelop/-/tags/v5.15 at the last KF5 commit. If/when you decide to bisect, you can compile KDevelop at the tagged commit against KF5/Qt5 and see if the crash is present. And you can check whether the crash is present in this early working KF6 commit: https://commits.kde.org/kdevelop/256bf70b947d0508a08f8321b69a4b8f375dab13 . If the crash is present in one but absent from the other of the two commits, we can be almost certain the regression is caused by the upgrade to KF6/Qt6 itself rather than some other KDevelop code change.
I can reproduce with current 24.08 branch. Seems it might be another case of Qt6 being more fragile about inserting into layout at positions that di not exist, my fprint debogging found NavigatableWidgetList::addItem(QWidget* widget, int pos) is called with a pos > m_itemLayout->count(). Not yet got around to investigate why this happens. I bet for now 2 cents this being a similar case to https://invent.kde.org/kdevelop/kdevelop/-/merge_requests/611 where Qt6 being more fragile shows bugs already in the old code, just Qt5 being more forgiving :)
One bad layout index I found to be coming due to the toBack logic introduced here: https://invent.kde.org/kdevelop/kdevelop/-/commit/cb01708424c1b21077761c6259e50fec1fac071f#eee3e6828db5f7aa76d9e9d3e7037ef65dabc9e5_562_626 No idea yet why this was introduced like that. The existing -1 already means "insert at back", perhaps this was simply missed and then some typo was made and widget used instead of m_widget? Bed time here, just dropping current findings.
A possibly relevant merge request was started @ https://invent.kde.org/kdevelop/kdevelop/-/merge_requests/660
Git commit 32d388680839d22c8d635dc8c63a7a8845901e96 by Igor Kushnir. Committed on 04/09/2024 at 15:23. Pushed by igorkushnir into branch 'master'. UsesWidget: don't try to insert items at invalid positions cb01708424c1b21077761c6259e50fec1fac071f intended to insert high-priority uses at the top, normal-priority in the middle, and low-priority ones (declaration/definition-only) at the bottom. But optionally passing widget->items().size() as the insertion position to NavigatableWidgetList::addItem() cannot achieve that. Furthermore, the number of items in `widget` can be greater than the number of items in the higher-level `m_widget`. In this case KDevelop eventually segfaults in QBoxLayout::itemAt() since Qt 6, or given a Qt build with assertions enabled, the "index out of range" assertion fails in QBoxLayout::insertWidget() => QBoxLayoutPrivate::validateIndex(). Remove the broken and crashing insertion at widget->items().size() and insert both normal- and low-priority uses at the bottom for now. FIXED-IN: 6.0.240801 M +6 -1 kdevplatform/language/duchain/navigation/useswidget.cpp https://invent.kde.org/kdevelop/kdevelop/-/commit/32d388680839d22c8d635dc8c63a7a8845901e96
Git commit c7d509b5846f24760c6af2dbb5fec8e727c5a86a by Igor Kushnir. Committed on 04/09/2024 at 17:52. Pushed by igorkushnir into branch 'release/24.08'. UsesWidget: don't try to insert items at invalid positions cb01708424c1b21077761c6259e50fec1fac071f intended to insert high-priority uses at the top, normal-priority in the middle, and low-priority ones (declaration/definition-only) at the bottom. But optionally passing widget->items().size() as the insertion position to NavigatableWidgetList::addItem() cannot achieve that. Furthermore, the number of items in `widget` can be greater than the number of items in the higher-level `m_widget`. In this case KDevelop eventually segfaults in QBoxLayout::itemAt() since Qt 6, or given a Qt build with assertions enabled, the "index out of range" assertion fails in QBoxLayout::insertWidget() => QBoxLayoutPrivate::validateIndex(). Remove the broken and crashing insertion at widget->items().size() and insert both normal- and low-priority uses at the bottom for now. FIXED-IN: 6.0.240801 (cherry picked from commit 32d388680839d22c8d635dc8c63a7a8845901e96) M +6 -1 kdevplatform/language/duchain/navigation/useswidget.cpp https://invent.kde.org/kdevelop/kdevelop/-/commit/c7d509b5846f24760c6af2dbb5fec8e727c5a86a
*** Bug 492864 has been marked as a duplicate of this bug. ***
*** Bug 493906 has been marked as a duplicate of this bug. ***