Bug 503830 - Reproducible crash in Digital Clock Time Zones config page
Summary: Reproducible crash in Digital Clock Time Zones config page
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: Digital Clock widget (other bugs)
Version First Reported In: master
Platform: Fedora RPMs Linux
: NOR crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords:
: 504256 (view as bug list)
Depends on:
Blocks:
 
Reported: 2025-05-06 08:09 UTC by cwo
Modified: 2025-05-24 09:08 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In: 6.4.0
Sentry Crash Report: https://crash-reports.kde.org/organizations/kde/issues/174513/events/9391b6e0e3ef4415aac0cf088c3687d0/


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description cwo 2025-05-06 08:09:32 UTC
SUMMARY

Using the steps below, I can reproducibly get plasmashell to crash on two different computers using master. I've gone back to commits from February (when the new Time Zones selector was added) and can reproduce it there (also required going back for several other components, at least libplasma) so it's likely not related to other changes since then. DrKonqui fails at creating a backtrace for me, but I got one from running plasmashell in gdb, see below (still some missing symbols though)

STEPS TO REPRODUCE
1.  Open Digital Clock Time Zones config page
2.  Click Add Time Zone
3.  Select a different config page (e.g. Shortcuts) in the dialog
4. Select Time Zones again

OBSERVED RESULT

Crash

EXPECTED RESULT

No crash, Time Zones config page is selected again.
 
SOFTWARE/OS VERSIONS
Linux/KDE Plasma:  Fedora 42
KDE Plasma Version:  master
KDE Frameworks Version: master
Qt Version: 6.9.0 (both stock Fedora and my self-compiled kde-builder version) 

ADDITIONAL INFORMATION

#0  0x00007ffff5845628 in QQmlPrivate::callArrowFunction
    (engine=engine@entry=0x6869570, function=0x0, thisObject=0x78216c0, args=0x7fffffff4370, argc=0)
    at /home/wolki/kde/src/qtdeclarative/src/qml/qml/qqml.cpp:2102
#1  0x00007ffff584b0db in QQmlPrivate::AOTCompiledContext::callObjectPropertyLookup
    (this=0x7fffffff4430, index=<optimized out>, object=<optimized out>, args=0x7fffffff4370, argc=0)
    at /home/wolki/kde/src/qtdeclarative/src/qml/qml/qqml.cpp:2357
#2  0x00007fff35528bb0 in QmlCacheGeneratedCode::_qt_0x2d_project_0x2e_org_imports_QtLocation_MapView_qml::aotBuiltFunctions::{lambda(QQmlPrivate::AOTCompiledContext const*, void**)#3}::operator()(QQmlPrivate::AOTCompiledContext const*, void**) const::{lambda()#1}::operator()() const (__closure=<synthetic pointer>)
    at /home/wolki/kde/build/qtlocation/src/location/.rcc/qmlcache/Location_maps/MapView_qml.cpp:1791
#3  QmlCacheGeneratedCode::_qt_0x2d_project_0x2e_org_imports_QtLocation_MapView_qml::aotBuiltFunctions::{lambda(QQmlPrivate::AOTCompiledContext const*, void**)#3}::operator()(QQmlPrivate::AOTCompiledContext const*, void**) const (__closure=0x0, aotContext=<optimized out>, argv=<optimized out>)
    at /home/wolki/kde/build/qtlocation/src/location/.rcc/qmlcache/Location_maps/MapView_qml.cpp:1799
#4  QmlCacheGeneratedCode::_qt_0x2d_project_0x2e_org_imports_QtLocation_MapView_qml::aotBuiltFunctions::{lambda(QQmlPrivate::AOTCompiledContext const*, void**)#3}::_FUN(QQmlPrivate::AOTCompiledContext const*, void**) ()
    at /home/wolki/kde/build/qtlocation/src/location/.rcc/qmlcache/Location_maps/MapView_qml.cpp:1823
#5  0x00007ffff5817b7e in operator() (argc=<optimized out>, __closure=0x7fffffff4500, argv=0x7fffffff47d0)
    at /home/wolki/kde/src/qtdeclarative/src/qml/jsruntime/qv4vme_moth.cpp:446
#6  QV4::coerceAndCall<AOTCompiledMetaMethod, QV4::Moth::VME::exec(QV4::MetaTypesStackFrame*, QV4::ExecutionEngine*)::<lambda(void**, int)> >(QV4::ExecutionEngine *, const AOTCompiledMetaMethod *, void **, const QMetaType *, int, struct {...})
    (engine=engine@entry=0x6869570, typedFunction=typedFunction@entry=0x7fffffff4538, argv=<optimized out>, types=<optimized out>, argc=<optimized out>, call=...)
    at /home/wolki/kde/src/qtdeclarative/src/qml/jsruntime/qv4jscall_p.h:559
#7  0x00007ffff581e8e8 in QV4::Moth::VME::exec (frame=frame@entry=0x7fffffff45d0, engine=engine@entry=0x6869570)
    at /home/wolki/kde/src/qtdeclarative/src/qml/jsruntime/qv4stackframe_p.h:151
#8  0x00007ffff57468b5 in QV4::Function::call
    (this=0x76df480, thisObject=0x78216c0, a=a@entry=0x7fffffff47d0, types=types@entry=0x7fffffff47e0, argc=argc@entry=0, context=<optimized out>) at /home/wolki/kde/src/qtdeclarative/src/qml/jsruntime/qv4function.cpp:36
#9  0x00007ffff58d32ba in QQmlJavaScriptExpression::evaluate
    (this=<optimized out>, a=a@entry=0x7fffffff47d0, types=types@entry=0x7fffffff47e0, argc=argc@entry=0)
    at /home/wolki/kde/src/qtdeclarative/src/qml/qml/qqmljavascriptexpression.cpp:270
#10 0x00007ffff58681b3 in QQmlBoundSignalExpression::evaluate (this=<optimized out>, a=a@entry=0x0)
    at /home/wolki/kde/src/qtdeclarative/src/qml/qml/qqmlboundsignal.cpp:200
#11 0x00007ffff5868bba in QQmlBoundSignal_callback (e=0x85e91e0, a=0x0)
    at /home/wolki/kde/src/qtdeclarative/src/qml/qml/qqmlboundsignal.cpp:315
#12 0x00007ffff59028ef in QQmlNotifier::emitNotify (endpoint=<optimized out>, a=0x0)
    at /home/wolki/kde/src/qtdeclarative/src/qml/qml/qqmlnotifier.cpp:70
#13 0x00007ffff3f4d170 in doActivate<false> (sender=0x754faf0, signal_index=3, argv=argv@entry=0x0)
    at /home/wolki/kde/src/qtbase/src/corelib/kernel/qobject.cpp:4036
#14 0x00007ffff3f43d99 in QMetaObject::activate
    (sender=sender@entry=0x754faf0, m=m@entry=0x7ffff5c8b1a0 <QQmlComponentAttached::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x0)
    at /home/wolki/kde/src/qtbase/src/corelib/kernel/qobject.cpp:4206
#15 0x00007ffff5879dc4 in QQmlComponentAttached::completed (this=this@entry=0x754faf0)
    at /home/wolki/kde/build/qtdeclarative/src/qml/Qml_autogen/include/moc_qqmlcomponentattached_p.cpp:122
#16 0x00007ffff5905db2 in QQmlObjectCreator::finalize (this=0x8aba810, interrupt=...)
    at /home/wolki/kde/src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1633
#17 0x00007ffff587b9fa in QQmlComponentPrivate::complete
    (enginePriv=0x7ffec83db6d0, state=state@entry=0x762f1e8)
    at /home/wolki/kde/src/qtdeclarative/src/qml/qml/ftw/qbipointer_p.h:133
#18 0x00007ffff5882916 in QQmlComponentPrivate::completeCreate (this=0x762f130)
    at /home/wolki/kde/src/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:1325
#19 0x00007ffff58834d5 in QQmlComponent::completeCreate (this=0x6eac710)
    at /home/wolki/kde/src/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:1291
#20 QQmlComponentPrivate::createWithProperties
    (this=this@entry=0x762f130, parent=parent@entry=0xd60080, properties=..., context=<optimized out>, behavior=behavior@entry=QQmlComponentPrivate::CreateWarnAboutRequiredProperties, createFromQml=createFromQml@entry=true)
    at /home/wolki/kde/src/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:987
#21 0x00007ffff588379b in QQmlComponent::createObject (this=<optimized out>, parent=0xd60080, properties=...)
    at /home/wolki/kde/src/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:1955
#22 0x00007ffff5884ad4 in QQmlComponent::qt_static_metacall
    (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=0x7fffffff6888)
    at /home/wolki/kde/build/qtdeclarative/src/qml/Qml_autogen/include/moc_qqmlcomponent.cpp:175
#23 0x00007ffff5884e5f in QQmlComponent::qt_metacall
    (this=0x6eac710, _c=<optimized out>, _id=9, _a=0x7fffffff6888)
    at /home/wolki/kde/build/qtdeclarative/src/qml/Qml_autogen/include/moc_qqmlcomponent.cpp:222
#24 0x00007ffff591b7a3 in QQmlObjectOrGadget::metacall
    (this=this@entry=0x7fffffff6b70, type=type@entry=QMetaObject::InvokeMetaMethod, index=<optimized out>,
    index@entry=13, argv=<optimized out>)
    at /home/wolki/kde/src/qtdeclarative/src/qml/qml/qqmlobjectorgadget.cpp:14
#25 0x00007ffff57aa72e in QV4::CallMethod
    (object=..., index=<optimized out>, returnType=..., argCount=<optimized out>, argTypes=<optimized out>, engine=<optimized out>, callArgs=<optimized out>, callType=<optimized out>)
    at /home/wolki/kde/qt/include/QtCore/qvarlengtharray.h:89
#26 QV4::QObjectMethod::callPrecise (object=..., data=<optimized out>, engine=<optimized out>,
    engine@entry=0x6869570, callArgs=<optimized out>,
    callArgs@entry=0x7fff371be9d8, callType=callType@entry=QMetaObject::InvokeMetaMethod)
    at /home/wolki/kde/src/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:2076
#27 0x00007ffff57ace01 in operator() (__closure=<optimized out>)
    at /home/wolki/kde/src/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:3078
#28 operator()<QV4::QObjectMethod::callInternal(const QV4::Value*, const QV4::Value*, int) const::<lambda()> >
    (__closure=<synthetic pointer>, call=<optimized out>)
    at /home/wolki/kde/src/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:3055
#29 QV4::QObjectMethod::callInternal
    (this=<optimized out>, thisObject=0x7fff371be970, argv=0x7fff371be988, argc=2)
    at /home/wolki/kde/src/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:3078
#30 0x00007ffff57d5247 in QV4::FunctionObject::call
    (this=0x7fffffff6c38, thisObject=0x7fff371be970, argv=0x7fff371be988, argc=2)
    at /home/wolki/kde/src/qtdeclarative/src/qml/jsruntime/qv4functionobject_p.h:187
#31 QV4::Runtime::CallPropertyLookup::call
    (engine=0x6869570, base=..., index=<optimized out>, argv=0x7fff371be988, argc=2)
    at /home/wolki/kde/src/qtdeclarative/src/qml/jsruntime/qv4runtime.cpp:1562
#32 0x00007fff646528e9 in ??? ()
#33 0x0000000006869570 in ??? ()
#34 0x0000000000000000 in ??? ()
Comment 1 Nate Graham 2025-05-06 15:43:26 UTC
I can reproduce this too.
Comment 2 Bug Janitor Service 2025-05-06 21:06:16 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/5452
Comment 3 cwo 2025-05-15 11:04:51 UTC
*** Bug 504256 has been marked as a duplicate of this bug. ***
Comment 4 Nate Graham 2025-05-15 21:26:45 UTC
Git commit f608cf185b703ca832a1b0a5682cbbc8af54abac by Nate Graham, on behalf of Niccolò Venerandi.
Committed on 15/05/2025 at 21:26.
Pushed by ngraham into branch 'master'.

Avoid "on" QML feature in TimezoneSelector to avoid crashes


Using "on" for Animations and Behaviors for map property
seems to be causing crashes when instancing the Timezone
Selector multiple times. This works around that by using
the "target" and "property" properties of animations.
FIXED-IN: 6.4.0

M  +2    -2    components/timezoneselector/GeoJsonDelegate.qml
M  +31   -20   components/timezoneselector/TimezoneSelector.qml

https://invent.kde.org/plasma/plasma-workspace/-/commit/f608cf185b703ca832a1b0a5682cbbc8af54abac
Comment 5 Nate Graham 2025-05-15 21:29:40 UTC
Git commit 3d579c5095088ae4b781af2a38ef59d6356b8a63 by Nate Graham.
Committed on 15/05/2025 at 21:29.
Pushed by ngraham into branch 'Plasma/6.4'.

Avoid "on" QML feature in TimezoneSelector to avoid crashes


Using "on" for Animations and Behaviors for map property
seems to be causing crashes when instancing the Timezone
Selector multiple times. This works around that by using
the "target" and "property" properties of animations.
FIXED-IN: 6.4.0


(cherry picked from commit f608cf185b703ca832a1b0a5682cbbc8af54abac)

95618713 Avoid "on" QML feature in TimezoneSelector to avoid crashes

Co-authored-by: Niccolò Venerandi <niccolo@venerandi.com>

M  +2    -2    components/timezoneselector/GeoJsonDelegate.qml
M  +31   -20   components/timezoneselector/TimezoneSelector.qml

https://invent.kde.org/plasma/plasma-workspace/-/commit/3d579c5095088ae4b781af2a38ef59d6356b8a63
Comment 6 Colin J Thomson 2025-05-16 18:46:33 UTC
Confirm fixed, thank you.