Bug 490710

Summary: NeoChat crashes randomly a lot in Quotient::RoomEvent::stateKey
Product: [Applications] NeoChat Reporter: Nate Graham <nate>
Component: GeneralAssignee: Tobias Fella <fella>
Status: RESOLVED FIXED    
Severity: crash CC: carl
Priority: NOR    
Version First Reported In: git master   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Nate Graham 2024-07-23 15:08:04 UTC
NeoChat and other KDE things built from git master, libquotient built from the tip of the 0.8.x branch.

Generally I'm not doing anything special, or the app is in the background, and it crashes with the following backtrace:

#0  __pthread_kill_implementation
    (threadid=<optimized out>, signo=signo@entry=11, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1  0x00007f35f02a8513 in __pthread_kill_internal (threadid=<optimized out>, signo=11)
    at pthread_kill.c:78
#2  0x00007f35f024fc4e in __GI_raise (sig=11) at ../sysdeps/posix/raise.c:26
#3  0x00007f35f331b9eb in KCrash::defaultCrashHandler (sig=11)
    at /home/nate/kde/src/kcrash/src/kcrash.cpp:597
#4  0x00007f35f024fd00 in <signal handler called> () at /lib64/libc.so.6
#5  QJsonPrivate::ObjectIterator<QtCbor::Element const, QList<QtCbor::Element>::const_iterator>::value_type::value_type (this=0x7fff1afdcef0, ref=...)
    at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/corelib/serialization/qjson_p.h:64
#6  __gnu_cxx::__ops::_Iter_comp_val<indexOf<QLatin1String>(const QExplicitlySharedDataPointer<QCborContainerPrivate>&, QLatin1String, bool*)::<lambda(const QJsonPrivate::ObjectIterator<const QtCbor::Element, QList<QtCbor::Element>::const_iterator>::value_type&, const QLatin1String&)> >::operator()<QJsonPrivate::ObjectIterator<const QtCbor::Element, QList<QtCbor::Element>::const_iterator>, const QLatin1String> (this=<synthetic pointer>, __it=..., __val=<synthetic pointer>...)
    at /usr/include/c++/14/bits/predefined_ops.h:196
#7  std::__lower_bound<QJsonPrivate::ObjectIterator<const QtCbor::Element, QList<QtCbor::Element>::const_iterator>, QLatin1String, __gnu_cxx::__ops::_Iter_comp_val<indexOf<QLatin1String>(const QExplicitlySharedDataPointer<QCborContainerPrivate>&, QLatin1String, bool*)::<lambda(const QJsonPrivate::ObjectIterator<const QtCbor::Element, QList<QtCbor::Element>::const_iterator>::value_type&, const QLatin1String&)> > > (__first=..., __last=..., __val=<synthetic pointer>..., __comp=...)
    at /usr/include/c++/14/bits/stl_algobase.h:1501
#8  std::lower_bound<QJsonPrivate::ObjectIterator<const QtCbor::Element, QList<QtCbor::Element>::const_iterator>, QLatin1String, indexOf<QLatin1String>(const QExplicitlySharedDataPointer<QCborContainerPrivate>&, QLatin1String, bool*)::<lambda(const QJsonPrivate::ObjectIterator<const QtCbor::Element, QList<QtCbor::Element>::const_iterator>::value_type&, const QLatin1String&)> >
    (__first=..., __last=..., __val=<synthetic pointer>..., __comp=...)
    at /usr/include/c++/14/bits/stl_algo.h:1973
#9  indexOf<QLatin1String> (o=..., key=..., keyExists=keyExists@entry=0x7fff1afdcf5f)
    at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/corelib/serialization/qjsonobject.cpp:264
#10 0x00007f35f0a4500b in QJsonObject::valueImpl<QLatin1String> (this=0xf9ff3c8, key=...)
    at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/corelib/serialization/qjsonobject.cpp:314
#11 QJsonObject::value (this=0xf9ff3c8, key=...)
    at /usr/src/debug/qt6-qtbase-6.7.2-4.fc40.x86_64/src/corelib/serialization/qjsonobject.cpp:301
#12 0x00007f35f3198909 in QJsonObject::operator[] (this=<optimized out>, key=...)
    at /usr/include/qt6/QtCore/qjsonobject.h:61
#13 Quotient::RoomEvent::stateKey (this=<optimized out>)
    at /home/nate/kde/src/libquotient/Quotient/events/roomevent.cpp:53
#14 0x00007f35f3185b42 in Quotient::RoomMemberEvent::userId (this=<optimized out>)
    at /home/nate/kde/src/libquotient/Quotient/events/roommemberevent.h:44
#15 Quotient::RoomMember::id (this=this@entry=0xecbf390)
    at /home/nate/kde/src/libquotient/Quotient/roommember.cpp:29
#16 0x00007f35f3185d3a in Quotient::RoomMember::isLocalMember (this=0xecbf390)
    at /home/nate/kde/src/libquotient/Quotient/roommember.cpp:39
#17 0x00007f35f30eb2b5 in Quotient::RoomMember::qt_static_metacall
    (_a=<optimized out>, _c=QMetaObject::ReadProperty, _o=<optimized out>, _id=<optimized out>)
    at /home/nate/kde/build/libquotient/QuotientQt6_autogen/JRPIO2IDQ7/moc_roommember.cpp:138
#18 Quotient::RoomMember::qt_static_metacall
    (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>)
    at /home/nate/kde/build/libquotient/QuotientQt6_autogen/JRPIO2IDQ7/moc_roommember.cpp:129
#19 0x00007f35f385cc92 in QV4::doStaticReadCall
    (metaObject=<optimized out>, valueTypeWrapper=0x7f35cc1fc440, index=<optimized out>, args=0x7fff1afdd110)
    at /usr/src/debug/qt6-qtdeclarative-6.7.2-2.fc40.x86_64/src/qml/qml/qqmlvaluetypewrapper.cpp:296
#20 QV4::getGadgetProperty
    (engine=0xa220ed0, valueTypeWrapper=0x7f35cc1fc440, metaType=..., coreIndex=<optimized out>, isFunction=<optimized out>, isEnum=<optimized out>)
    at /usr/src/debug/qt6-qtdeclarative-6.7.2-2.fc40.x86_64/src/qml/qml/qqmlvaluetypewrapper.cpp:366
#21 0x00007f35ada170ad in ??? ()
#22 0x0000000000000000 in ??? ()
Comment 1 Tobias Fella 2024-07-27 09:00:23 UTC
Fixed in 11fd4f88ec61c587fe873cb0d4abb7d7f723a6bf