Summary: | crash in click to 'show use' (only in large project) | ||
---|---|---|---|
Product: | [Applications] kdevelop | Reporter: | painless roaster <painless.roaster> |
Component: | general | Assignee: | kdevelop-bugs-null |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | admin, asturm, igorkuo, kossebau, stefano.crocco |
Priority: | NOR | Keywords: | drkonqi |
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Fedora RPMs | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/kdevelop/kdevelop/-/commit/c7d509b5846f24760c6af2dbb5fec8e727c5a86a | Version Fixed In: | 6.0.240801 |
Sentry Crash Report: | |||
Attachments: | New crash information added by DrKonqi |
Description
painless roaster
2024-08-26 15:26:39 UTC
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. *** |