Bug 508213

Summary: Plasma crashes inEnvCanadaIon::getWeatherData()
Product: [Plasma] plasmashell Reporter: Darryl <ddrs>
Component: Weather widgetAssignee: Plasma Bugs List <plasma-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: isma.af, kde, nate
Priority: HI Keywords: drkonqi
Version First Reported In: 6.4.4   
Target Milestone: 1.0   
Platform: Manjaro   
OS: Linux   
Latest Commit: Version Fixed In: 6.4.6
Sentry Crash Report: https://crash-reports.kde.org/organizations/kde/issues/243839
Attachments: New crash information added by DrKonqi

Description Darryl 2025-08-14 00:45:42 UTC
Application: plasmashell (6.4.4)

ApplicationNotResponding [ANR]: false
Qt Version: 6.9.1
Frameworks Version: 6.17.0
Operating System: Linux 6.16.0-5-MANJARO x86_64
Windowing System: Wayland
Distribution: Manjaro Linux
DrKonqi: 6.4.4 [CoredumpBackend]

-- Information about the crash:
Not exactly sure what caused the crash, there were several crashes one after another, I was playing a game (full-screen) so didn't see anything else.

The reporter is unsure if this crash is reproducible.

-- Backtrace (Reduced):
#5  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#6  0x00007f8a32e98a13 in __pthread_kill_internal (threadid=<optimized out>, signo=6) at pthread_kill.c:89
#7  0x00007f8a32e3e410 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#8  0x00007f8a32e2557a in __GI_abort () at abort.c:73
#9  0x00007f8a33297bf6 in __gnu_cxx::__verbose_terminate_handler () at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/vterminate.cc:95
#10 0x00007f8a332b1eba in __cxxabiv1::__terminate (handler=<optimized out>) at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:48
#11 0x00007f8a332975d9 in std::terminate () at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:58
#12 0x00007f8a332b2176 in __cxxabiv1::__cxa_throw (obj=<optimized out>, tinfo=0x7f8a33483a98 <typeinfo for std::bad_alloc>, dest=0x7f8a332b0160 <std::bad_alloc::~bad_alloc()>) at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_throw.cc:98
#13 0x00007f8a3368f327 in qBadAlloc () at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qassert.cpp:171
#14 0x00007f8a336b17a8 in QtPrivate::QPodArrayOps<char16_t>::reallocate (this=0x7ffce50f0330, alloc=<optimized out>, option=QArrayData::KeepSize) at /usr/src/debug/qt6-base/qtbase/src/corelib/tools/qarraydataops.h:262
#15 QString::reallocData (this=this@entry=0x7ffce50f0330, alloc=<optimized out>, option=option@entry=QArrayData::KeepSize) at /usr/src/debug/qt6-base/qtbase/src/corelib/text/qstring.cpp:2800
#16 0x00007f89fa07f07d in QString::reserve (this=<optimized out>, asize=<optimized out>) at /usr/include/qt6/QtCore/qstring.h:1416
#17 operator+=<QString const&, char16_t const (&) [2]> (a=..., b=...) at /usr/include/qt6/QtCore/qstringbuilder.h:459
#18 EnvCanadaIon::getWeatherData (this=this@entry=0x5600496b0fb0, source=...) at /usr/src/debug/plasma-workspace/plasma-workspace-6.4.4/dataengines/weather/ions/envcan/ion_envcan.cpp:564
#19 0x00007f89fa080f71 in EnvCanadaIon::readXMLData (this=this@entry=0x5600496b0fb0, source=..., xml=...) at /usr/src/debug/plasma-workspace/plasma-workspace-6.4.4/dataengines/weather/ions/envcan/ion_envcan.cpp:751
#20 0x00007f89fa082292 in EnvCanadaIon::slotJobFinished (this=0x5600496b0fb0, job=<optimized out>) at /usr/src/debug/plasma-workspace/plasma-workspace-6.4.4/dataengines/weather/ions/envcan/ion_envcan.cpp:617


Reported using DrKonqi
Comment 1 Darryl 2025-08-14 00:45:44 UTC
Created attachment 184048 [details]
New crash information added by DrKonqi

DrKonqi auto-attaching complete backtrace.
Comment 2 Nate Graham 2025-08-14 13:44:03 UTC
Searchable backtrace:


Thread 1 (Thread 0x7f8a2d9e5a40 (LWP 17875)):
[KCrash Handler]
#5  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#6  0x00007f8a32e98a13 in __pthread_kill_internal (threadid=<optimized out>, signo=6) at pthread_kill.c:89
#7  0x00007f8a32e3e410 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#8  0x00007f8a32e2557a in __GI_abort () at abort.c:73
#9  0x00007f8a33297bf6 in __gnu_cxx::__verbose_terminate_handler () at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/vterminate.cc:95
#10 0x00007f8a332b1eba in __cxxabiv1::__terminate (handler=<optimized out>) at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:48
#11 0x00007f8a332975d9 in std::terminate () at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:58
#12 0x00007f8a332b2176 in __cxxabiv1::__cxa_throw (obj=<optimized out>, tinfo=0x7f8a33483a98 <typeinfo for std::bad_alloc>, dest=0x7f8a332b0160 <std::bad_alloc::~bad_alloc()>) at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_throw.cc:98
#13 0x00007f8a3368f327 in qBadAlloc () at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qassert.cpp:171
#14 0x00007f8a336b17a8 in QtPrivate::QPodArrayOps<char16_t>::reallocate (this=0x7ffce50f0330, alloc=<optimized out>, option=QArrayData::KeepSize) at /usr/src/debug/qt6-base/qtbase/src/corelib/tools/qarraydataops.h:262
#15 QString::reallocData (this=this@entry=0x7ffce50f0330, alloc=<optimized out>, option=option@entry=QArrayData::KeepSize) at /usr/src/debug/qt6-base/qtbase/src/corelib/text/qstring.cpp:2800
#16 0x00007f89fa07f07d in QString::reserve (this=<optimized out>, asize=<optimized out>) at /usr/include/qt6/QtCore/qstring.h:1416
#17 operator+=<QString const&, char16_t const (&) [2]> (a=..., b=...) at /usr/include/qt6/QtCore/qstringbuilder.h:459
#18 EnvCanadaIon::getWeatherData (this=this@entry=0x5600496b0fb0, source=...) at /usr/src/debug/plasma-workspace/plasma-workspace-6.4.4/dataengines/weather/ions/envcan/ion_envcan.cpp:564
#19 0x00007f89fa080f71 in EnvCanadaIon::readXMLData (this=this@entry=0x5600496b0fb0, source=..., xml=...) at /usr/src/debug/plasma-workspace/plasma-workspace-6.4.4/dataengines/weather/ions/envcan/ion_envcan.cpp:751
#20 0x00007f89fa082292 in EnvCanadaIon::slotJobFinished (this=0x5600496b0fb0, job=<optimized out>) at /usr/src/debug/plasma-workspace/plasma-workspace-6.4.4/dataengines/weather/ions/envcan/ion_envcan.cpp:617
#21 0x00007f8a337d37ef in QtPrivate::QSlotObjectBase::call (this=<optimized out>, r=<optimized out>, a=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461
#22 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4146
#23 0x00007f8a35946923 in QMetaObject::activate<void, KJob*, KJob::QPrivateSignal> (sender=0x56004bff5360, mo=<optimized out>, local_signal_index=3, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs.h:306
#24 KJob::result (this=this@entry=0x56004bff5360, _t1=<optimized out>, _t1@entry=0x56004bff5360, _t2=...) at /usr/src/debug/kcoreaddons/build/src/lib/KF6CoreAddons_autogen/include/moc_kjob.cpp:475
#25 0x00007f8a3594c73c in KJob::finishJob (this=0x56004bff5360, emitResult=<optimized out>) at /usr/src/debug/kcoreaddons/kcoreaddons-6.17.0/src/lib/jobs/kjob.cpp:115
#26 0x00007f8a337d37ef in QtPrivate::QSlotObjectBase::call (this=<optimized out>, r=<optimized out>, a=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461
#27 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4146
#28 0x00007f8a3319a718 in KIO::WorkerInterface::finished (this=0x56004942d180) at /usr/src/debug/kio/build/src/core/KF6KIOCore_autogen/include/moc_workerinterface_p.cpp:341
#29 KIO::WorkerInterface::dispatch (this=0x56004942d180, _cmd=104, rawdata=...) at /usr/src/debug/kio/kio-6.17.0/src/core/workerinterface.cpp:127
#30 0x00007f8a33192675 in KIO::WorkerInterface::dispatch (this=0x56004942d180) at /usr/src/debug/kio/kio-6.17.0/src/core/workerinterface.cpp:58
#31 0x00007f8a33195910 in KIO::Worker::gotInput (this=0x56004942d180) at /usr/src/debug/kio/kio-6.17.0/src/core/worker.cpp:262
#32 0x00007f8a337d37ef in QtPrivate::QSlotObjectBase::call (this=<optimized out>, r=<optimized out>, a=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461
#33 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4146
#34 0x00007f8a337c0e34 in QObject::event (this=<optimized out>, e=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:1431
#35 0x00007f8a35b01c70 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt6Widgets.so.6
#36 0x00007f8a33768118 in QCoreApplication::notifyInternal2 (receiver=0x56004a1eac50, event=event@entry=0x56004c4a7800) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1106
#37 0x00007f8a337684fb in QCoreApplication::sendEvent (receiver=<optimized out>, event=0x56004c4a7800) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1546
#38 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x560048907ec0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1879
#39 0x00007f8a33a3fcf8 in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1733
#40 postEventSourceDispatch (s=0x56004890f4b0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:246
#41 0x00007f8a3231787d in g_main_dispatch (context=0x7f8a28000f70) at ../glib/glib/gmain.c:3398
#42 0x00007f8a32318cd7 in g_main_context_dispatch_unlocked (context=0x7f8a28000f70) at ../glib/glib/gmain.c:4249
#43 g_main_context_iterate_unlocked (context=context@entry=0x7f8a28000f70, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4314
#44 0x00007f8a32318ee5 in g_main_context_iteration (context=0x7f8a28000f70, may_block=1) at ../glib/glib/gmain.c:4379
#45 0x00007f8a33a3c5e2 in QEventDispatcherGlib::processEvents (this=0x56004890fbc0, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:399
#46 0x00007f8a337744b6 in QEventLoop::processEvents (this=0x7ffce50f1490, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:104
#47 QEventLoop::exec (this=0x7ffce50f1490, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:186
#48 0x00007f8a3376c7c1 in QCoreApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1449
#49 0x000056002257a3f1 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/plasma-workspace/plasma-workspace-6.4.4/shell/main.cpp:188
Comment 3 Nate Graham 2025-08-14 13:46:24 UTC
Relevant part:

#18 EnvCanadaIon::getWeatherData (this=this@entry=0x5600496b0fb0, source=...) at /usr/src/debug/plasma-workspace/plasma-workspace-6.4.4/dataengines/weather/ions/envcan/ion_envcan.cpp:564
#19 0x00007f89fa080f71 in EnvCanadaIon::readXMLData (this=this@entry=0x5600496b0fb0, source=..., xml=...) at /usr/src/debug/plasma-workspace/plasma-workspace-6.4.4/dataengines/weather/ions/envcan/ion_envcan.cpp:751
#20 0x00007f89fa082292 in EnvCanadaIon::slotJobFinished (this=0x5600496b0fb0, job=<optimized out>) at /usr/src/debug/plasma-workspace/
Comment 4 Nate Graham 2025-10-07 15:55:10 UTC
Sentry says this is currently the #3 crash in Plasma; raising priority. See https://crash-reports.kde.org/organizations/kde/issues/243839
Comment 5 Bug Janitor Service 2025-10-07 18:04:44 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/5900
Comment 6 Bug Janitor Service 2025-10-07 20:02:39 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma5support/-/merge_requests/46
Comment 7 Ismael Asensio 2025-10-07 20:16:18 UTC
Git commit 5d8717621f9c4998ceb76c3ff1e8aef6b61fd5de by Ismael Asensio.
Committed on 07/10/2025 at 18:01.
Pushed by iasensio into branch 'Plasma/6.4'.

dataengines/weather/envcan: Add a literal instead of a stringview

Not fully sure this fixes the crash, but the traces point to a
weird issue in QStringBuilder when trying to reserve a new size
for the QString in this line, so better safe than sorry.

Current code for Plasma/6.5 (in kdeplasma-addons) already has this
change applied
FIXED-IN: 6.4.6

M  +1    -1    dataengines/weather/ions/envcan/ion_envcan.cpp

https://invent.kde.org/plasma/plasma-workspace/-/commit/5d8717621f9c4998ceb76c3ff1e8aef6b61fd5de
Comment 8 Ismael Asensio 2025-10-07 20:32:00 UTC
Git commit 53914a2881bb1d11f383f89314debff0d4093f21 by Ismael Asensio.
Committed on 07/10/2025 at 19:56.
Pushed by iasensio into branch 'master'.

dataengines/weather/envcan: Add a literal instead of a stringview

This potentially fixes a crash in certain conditions, where
QStringBuilder tries to fetch a new size from the literal
to resize the existing QString

M  +1    -1    src/dataengines/weather/ions/envcan/ion_envcan.cpp

https://invent.kde.org/plasma/plasma5support/-/commit/53914a2881bb1d11f383f89314debff0d4093f21
Comment 9 Bug Janitor Service 2025-10-07 20:40:18 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma5support/-/merge_requests/47
Comment 10 Ismael Asensio 2025-10-07 20:43:46 UTC
Git commit 9208785aae8c6ad927dc00f023eb82cc57f7a38a by Ismael Asensio.
Committed on 07/10/2025 at 20:39.
Pushed by iasensio into branch 'Plasma/6.5'.

dataengines/weather/envcan: Add a literal instead of a stringview

This potentially fixes a crash in certain conditions, where
QStringBuilder tries to fetch a new size from the literal
to resize the existing QString


(cherry picked from commit 53914a2881bb1d11f383f89314debff0d4093f21)

Co-authored-by: Ismael Asensio <isma.af@gmail.com>

M  +1    -1    src/dataengines/weather/ions/envcan/ion_envcan.cpp

https://invent.kde.org/plasma/plasma5support/-/commit/9208785aae8c6ad927dc00f023eb82cc57f7a38a
Comment 11 Ismael Asensio 2025-10-09 08:06:33 UTC
*** Bug 510414 has been marked as a duplicate of this bug. ***