Bug 453730 - Plasma crashed in KIconLoader::setCustomPalette()
Summary: Plasma crashed in KIconLoader::setCustomPalette()
Status: RESOLVED WORKSFORME
Alias: None
Product: frameworks-kiconthemes
Classification: Frameworks and Libraries
Component: general (other bugs)
Version First Reported In: 5.93.0
Platform: Manjaro Linux
: NOR crash
Target Milestone: ---
Assignee: Christoph Feck
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-05-13 09:10 UTC by Marcos Gutiérrez Alonso
Modified: 2022-05-23 14:18 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments
Segmentation fault backtrace with GDB (149.21 KB, text/plain)
2022-05-13 09:10 UTC, Marcos Gutiérrez Alonso
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Marcos Gutiérrez Alonso 2022-05-13 09:10:53 UTC
Created attachment 148788 [details]
Segmentation fault backtrace with GDB

SUMMARY
I attach a backtrace. This segmentation fault crashes the entire plasma shell. It happens seemingly randomly and multiple times per session.

STEPS TO REPRODUCE
It seems to happen randomly. However, the crash usually takes place when switching between screens, alt+tabbing, drag-and-dropping something or when a notification pops up.

OBSERVED RESULT
The entire plasma shell crashes (and then restarts).

SOFTWARE/OS VERSIONS
I'm using Wayland

OS: Manjaro Linux x86_64
Kernel: 5.17.6-1-MANJARO
Resolution: 1920x1080
DE: Plasma 5.24.5
WM: kwin
WM Theme: Relax-Blur-Aurorae
Theme: Breath2 2021 Dark [Plasma], Breeze [GTK3]
Icons: [Plasma], Relax-Dark-Icons [GTK2/3]
CPU: AMD Ryzen 7 3700X (16) @ 3.600GHz
GPU: AMD ATI Radeon RX 6600/6600 XT/6600M
Memory: 6280MiB / 16001MiB

(available in About System)
KDE Plasma Version: 5.24.5
KDE Frameworks Version: 5.93.0
Qt Version: 5.15.3
Comment 1 Nate Graham 2022-05-13 14:52:31 UTC
Pasting the crashing thread from the backtrace for searchability:

Thread 1 (Thread 0x7ff310242540 (LWP 1345) "plasmashell"):
#0  0x00007ff3156d34d4 in QColor::operator=(QColor const&) () at /usr/lib/libQt5Gui.so.5
#1  0x00007ff314a64b74 in KIconColors::KIconColors(QPalette const&) () at /usr/lib/libKF5IconThemes.so.5
#2  0x00007ff314a64f46 in KIconColors::KIconColors() () at /usr/lib/libKF5IconThemes.so.5
#3  0x00007ff314a65116 in KIconEngine::KIconEngine(QString const&, KIconLoader*) () at /usr/lib/libKF5IconThemes.so.5
#4  0x00007ff30404bbef in  () at /usr/lib/qt/plugins/plasma/applets/org.kde.plasma.private.systemtray.so
#5  0x00007ff31517e463 in  () at /usr/lib/libQt5Core.so.5
#6  0x00007ff315aab784 in QDBusPendingCallWatcher::finished(QDBusPendingCallWatcher*) () at /usr/lib/libQt5DBus.so.5
#7  0x00007ff3151717d6 in QObject::event(QEvent*) () at /usr/lib/libQt5Core.so.5
#8  0x00007ff315da32c6 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#9  0x00007ff31514d5aa in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#10 0x00007ff31514e0a9 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib/libQt5Core.so.5
#11 0x00007ff315195678 in  () at /usr/lib/libQt5Core.so.5
#12 0x00007ff313534163 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#13 0x00007ff31358a9e9 in  () at /usr/lib/libglib-2.0.so.0
#14 0x00007ff3135316c5 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#15 0x00007ff31519957a in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#16 0x00007ff31514588b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#17 0x00007ff315150fd7 in QCoreApplication::exec() () at /usr/lib/libQt5Core.so.5
#18 0x000055ee36aa5f81 in  ()
#19 0x00007ff314abe310 in __libc_start_call_main () at /usr/lib/libc.so.6
#20 0x00007ff314abe3c1 in __libc_start_main_impl () at /usr/lib/libc.so.6
#21 0x000055ee36aa6335 in  ()
Comment 2 Nate Graham 2022-05-13 14:53:58 UTC
Unfortunately the backtrace is incomplete and missing debug symbols for the following lines that we need to figure out exactly what's going wrong:

> #4  0x00007ff30404bbef in  () at /usr/lib/qt/plugins/plasma/applets/org.kde.plasma.private.systemtray.so

Could you please install debug symbols for Plasma and the kiconthemes framework, reproduce the crash, and attach a new symbolicated backtrace? See https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports

Thanks!
Comment 3 Marcos Gutiérrez Alonso 2022-05-13 16:59:08 UTC
(In reply to Nate Graham from comment #2)
> Unfortunately the backtrace is incomplete and missing debug symbols for the
> following lines that we need to figure out exactly what's going wrong:
> 
> > #4  0x00007ff30404bbef in  () at /usr/lib/qt/plugins/plasma/applets/org.kde.plasma.private.systemtray.so
> 
> Could you please install debug symbols for Plasma and the kiconthemes
> framework, reproduce the crash, and attach a new symbolicated backtrace? See
> https://community.kde.org/Guidelines_and_HOWTOs/Debugging/
> How_to_create_useful_crash_reports
> 
> Thanks!

(This is my first time reporting a bug with a backtrace, please be patient)

After installing `debuginfod`, I restarted and got another crash. This time is not the same error I think.
This is the backtrace (from gdb I run `bt full`):

```
Core was generated by `/usr/bin/plasmashell'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f110f49534c in __pthread_kill_implementation () from /usr/lib/libc.so.6
[Current thread is 1 (Thread 0x7f110abb7540 (LWP 46271))]
(gdb)
(gdb) c
The program is not being run.
(gdb) bt full
#0  0x00007f110f49534c in __pthread_kill_implementation () at /usr/lib/libc.so.6
#1  0x00007f110f4484b8 in raise () at /usr/lib/libc.so.6
#2  0x00007f11117aa384 in KCrash::defaultCrashHandler(int) (sig=11) at /usr/src/debug/kcrash-5.93.0/src/kcrash.cpp:609
        data =
          {<KCrash::MetadataWriter> = {_vptr.MetadataWriter = 0x7f11117ad8b8 <vtable for KCrash::Metadata+16>}, argv = {_M_elems = {0x0, 0x7f11117ab0c1 "--platform", 0x55d477e95b98 "wayland", 0x7f11117ab0de "--appname", 0x55d475b896f0 "plasmashell", 0x7f11117ab0f7 "--apppath", 0x55d475b89630 "/usr/bin", 0x7f11117ab104 "--signal", 0x7fffdb1715e6 "11", 0x7f11117ab112 "--pid", 0x7fffdb1715f0 "46271", 0x7f11117ab118 "--appversion", 0x55d4760df478 "5.24.5", 0x7f11117ab125 "--programname", 0x55d4760a76e8 "Plasma", 0x7f11117ab133 "--bugaddress", 0x55d4760a81b8 "submit@bugs.kde.org", 0x7f11117ab14e "--startupid", 0x55d4796a4798 "0", 0x7f11117ab162 "--restarted", 0x0 <repeats 11 times>}}, argc = 20, m_writer = 0x7fffdb171720}
        platformName = {d = 0x55d477e95b80}
        about = <optimized out>
        argv = 0x7fffdb171618
        ini =
            {<KCrash::MetadataWriter> = {_vptr.MetadataWriter = 0x7f11117ad8e8 <vtable for KCrash::MetadataINIWriter+16>}, writable = false, fd = 95, iniLine = {_M_elems = "restarted=true\n\000t@bugs.kde.org\n", '\000' <repeats 992 times>}}
        sigtxt = "11\000\000\000\000\000\000\000"
        pidtxt = "46271\000\000\000\000\000\000\000\000\000\360?\000\000\000"
        startupId = {d = 0x55d4796a4780}
        argc = <optimized out>
        crashRecursionCounter = 2
#3  0x00007f110f448560 in <signal handler called> () at /usr/lib/libc.so.6
#4  0x00007f11100484d4 in QColor::operator=(QColor const&) () at /usr/lib/libQt5Gui.so.5
#5  0x00007f110f3d9b74 in KIconColors::KIconColors(QPalette const&) (this=<optimized out>, palette=..., this=<optimized out>, palette=<optimized out>) at /usr/src/debug/kiconthemes-5.93.0/src/kiconcolors.cpp:101
        d = 0x55d47984d9c0
#6  0x00007f110f3e954b in KIconLoader::setCustomPalette(QPalette const&) (this=0x7f110f3ff0d0 <(anonymous namespace)::Q_QGS_globalIconLoader::innerFunction()::holder>, palette=...)
    at /usr/src/debug/kiconthemes-5.93.0/src/kiconloader.cpp:1834
#7  0x00007f10cc6da27e in QIconSource::pixmap(QSize const&) (this=0x55d477be87c0, size=...) at /usr/src/debug/plasma-framework-5.93.0/src/declarativeimports/core/iconitem.cpp:96
        result = <incomplete type>
#8  0x00007f10cc6dff5e in IconItem::loadPixmap() (this=0x55d47700dd50) at /usr/src/debug/plasma-framework-5.93.0/src/declarativeimports/core/iconitem.cpp:713
        size = -619240880
        result = <incomplete type>
        animated = <optimized out>
#9  0x00007f11113c606d in QQuickWindowPrivate::polishItems() (this=0x7f10fc001d20) at /usr/src/debug/qtdeclarative/src/quick/items/qquickwindow.cpp:393
        item = 0x55d47700dd50
        itemPrivate = <optimized out>
        itemsRemaining = 1
        polishLoopDetector = {itemsToPolish = <optimized out>, numPolishLoopsInSequence = 0}
#10 0x00007f111137f463 in QSGThreadedRenderLoop::polishAndSync(QSGThreadedRenderLoop::Window*, bool) (this=0x55d476866ab0, w=0x55d477118360, inExpose=<optimized out>)
    at /usr/src/debug/qtdeclarative/src/quick/scenegraph/qsgthreadedrenderloop.cpp:1577
        window = 0x55d476d77ca0
        timer = {t1 = -9223372036854775808, t2 = -9223372036854775808}
        polishTime = 0
        waitTime = 0
        syncTime = 0
        profileFrames = false
        d = <optimized out>
#11 0x00007f11113d1784 in QQuickWindow::event(QEvent*) (this=0x55d476d77ca0, e=0x7fffdb1725c0) at /usr/src/debug/qtdeclarative/src/quick/items/qquickwindow.cpp:1857
        d = 0x7f10fc001d20
#12 0x00007f11107182c6 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#13 0x00007f110fac25aa in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x55d476d77ca0, event=0x7fffdb1725c0) at kernel/qcoreapplication.cpp:1064
        selfRequired = true
        result = false
        cbdata = {0x55d476d77ca0, 0x7fffdb1725c0, 0x7fffdb17256f}
        d = <optimized out>
        threadData = 0x55d475ba8f00
        scopeLevelCounter = {threadData = 0x55d475ba8f00}
#14 0x00007f110fe8c971 in QPlatformWindow::deliverUpdateRequest() () at /usr/lib/libQt5Gui.so.5
#15 0x00007f110fae67d6 in QObject::event(QEvent*) (this=<optimized out>, e=0x7f10fc022d30) at kernel/qobject.cpp:1314
        mce = 0x7f10fc022d30
        sender = {previous = 0x0, receiver = 0x55d47707a2d0, sender = 0x0, signal = -1}
#16 0x00007f11107182c6 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#17 0x00007f110fac25aa in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x55d47707a2d0, event=0x7f10fc022d30) at kernel/qcoreapplication.cpp:1064
        selfRequired = true
        result = false
        cbdata = {0x55d47707a2d0, 0x7f10fc022d30, 0x7fffdb1726ff}
        d = <optimized out>
        threadData = 0x55d475ba8f00
        scopeLevelCounter = {threadData = 0x55d475ba8f00}
#18 0x00007f110fac30a9 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x55d475ba8f00) at kernel/qcoreapplication.cpp:1821
        e = 0x7f10fc022d30
        pe = <optimized out>
        r = <optimized out>
        relocker = {m_func = {__locker = @0x7fffdb172780}, m_invoke = true}
        event_deleter = {d = 0x7f10fc022d30}
        locker = {_M_device = 0x55d475ba8f30, _M_owns = false}
        startOffset = 0
        i = @0x55d475ba8f24: 1
        cleanup = {receiver = 0x0, event_type = 0, data = 0x55d475ba8f00, exceptionCaught = true}
#19 0x00007f110fb0a678 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x55d475bce0f0) at kernel/qeventdispatcher_glib.cpp:277
        source = 0x55d475bce0f0
#20 0x00007f110dea9163 in g_main_dispatch (context=0x55d475bcc7c0) at ../glib/glib/gmain.c:3417
        dispatch = 0x7f110fb0a660 <postEventSourceDispatch(GSource*, GSourceFunc, gpointer)>
        prev_source = 0x0
        begin_time_nsec = 20890186283411
        was_in_call = <optimized out>
        user_data = 0x0
        callback = 0x0
        cb_funcs = 0x0
        cb_data = 0x0
        need_destroy = <optimized out>
        source = 0x55d475bce0f0
        current = 0x55d476238760
        i = 0
#21 g_main_context_dispatch (context=0x55d475bcc7c0) at ../glib/glib/gmain.c:4135
#22 0x00007f110deff9e9 in g_main_context_iterate.constprop.0 (context=context@entry=0x55d475bcc7c0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4211
        max_priority = 2147483647
        timeout = 15
        some_ready = 1
        nfds = 9
        allocated_nfds = 13
        fds = 0x55d4766377c0
        begin_time_nsec = 20890184761762
#23 0x00007f110dea66c5 in g_main_context_iteration (context=0x55d475bcc7c0, may_block=1) at ../glib/glib/gmain.c:4276
        retval = <optimized out>
#24 0x00007f110fb0e57a in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x55d475b85bb0, flags=...) at kernel/qeventdispatcher_glib.cpp:423
        d = 0x55d475bcee10
        canWait = <optimized out>
        savedFlags = {i = 0}
        result = <optimized out>
#25 0x00007f110faba88b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffdb172a40, flags=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
        d = 0x55d4762386c0
        threadData = <optimized out>
        locker = {val = 94370996588504}
        app = <optimized out>
#26 0x00007f110fac5fd7 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
        threadData = 0x55d475ba8f00
        eventLoop =
              {<QObject> = {_vptr.QObject = 0x7f110fd47710 <vtable for QEventLoop+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7f110fba9940 <_ZL26qt_meta_stringdata_QObject.lto_priv.0>, data = 0x7f110fba9820 <_ZL20qt_meta_data_QObject.lto_priv.0>, static_metacall = 0x7f110faf3740 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x55d4762386c0}, static staticQtMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7f110fbd05c0 <_ZL21qt_meta_stringdata_Qt.lto_priv.0>, data = 0x7f110fbcd740 <_ZL15qt_meta_data_Qt.lto_priv.0>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x7f110fd40520 <QObject::staticMetaObject>}, stringdata = 0x7f110fba5300 <_ZL29qt_meta_stringdata_QEventLoop.lto_priv.0>, data = 0x7f110fba52a0 <_ZL23qt_meta_data_QEventLoop.lto_priv.0>, static_metacall = 0x7f110fab95b0 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}
        returnCode = <optimized out>
#27 0x000055d475995f81 in main(int, char**) (argc=<optimized out>, argv=0x7fffdb172be0) at /usr/src/debug/plasma-workspace-5.24.5/shell/main.cpp:238
        qpaVariable = <optimized out>
        app = <incomplete type>
        aboutData = Python Exception <class 'gdb.error'>: Request for member '_M_head_impl' is ambiguous in type 'std::tuple<KAboutDataPrivate*, std::default_delete<KAboutDataPrivate> >'. Candidates are:
  'std::default_delete<KAboutDataPrivate> std::_Head_base<1, std::default_delete<KAboutDataPrivate>, true>::_M_head_impl' (std::tuple<KAboutDataPrivate*, std::default_delete<KAboutDataPrivate> > -> std::_Tuple_impl<0, KAboutDataPrivate*, std::default_delete<KAboutDataPrivate> > -> std::_Tuple_impl<1, std::default_delete<KAboutDataPrivate> > -> std::_Head_base<1, std::default_delete<KAboutDataPrivate>, true>)
  '<unnamed type> std::_Head_base<0, KAboutDataPrivate*, false>::_M_head_impl' (std::tuple<KAboutDataPrivate*, std::default_delete<KAboutDataPrivate> > -> std::_Tuple_impl<0, KAboutDataPrivate*, std::default_delete<KAboutDataPrivate> > -> std::_Head_base<0, KAboutDataPrivate*, false>)

                  {d = {_M_t = {<std::__uniq_ptr_impl<KAboutDataPrivate, std::default_delete<KAboutDataPrivate> >> = {_M_t = std::tuple containing = {[1] = 0x55d476073080, [2] = {<No data fields>}}}, <No data fields>}}}
        replace = <optimized out>
        corona = <optimized out>
        service = Python Exception <class 'gdb.error'>: Request for member '_M_head_impl' is ambiguous in type 'std::tuple<KDBusServicePrivate*, std::default_delete<KDBusServicePrivate> >'. Candidates are:
  'std::default_delete<KDBusServicePrivate> std::_Head_base<1, std::default_delete<KDBusServicePrivate>, true>::_M_head_impl' (std::tuple<KDBusServicePrivate*, std::default_delete<KDBusServicePrivate> > -> std::_Tuple_impl<0, KDBusServicePrivate*, std::default_delete<KDBusServicePrivate> > -> std::_Tuple_impl<1, std::default_delete<KDBusServicePrivate> > -> std::_Head_base<1, std::default_delete<KDBusServicePrivate>, true>)
  '<unnamed type> std::_Head_base<0, KDBusServicePrivate*, false>::_M_head_impl' (std::tuple<KDBusServicePrivate*, std::default_delete<KDBusServicePrivate> > -> std::_Tuple_impl<0, KDBusServicePrivate*, std::default_delete<KDBusServicePrivate> > -> std::_Head_base<0, KDBusServicePrivate*, false>)

                  {<QObject> = {_vptr.QObject = 0x7f11110f2310 <vtable for KDBusService+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7f110fba9940 <_ZL26qt_meta_stringdata_QObject.lto_priv.0>, data = 0x7f110fba9820 <_ZL20qt_meta_data_QObject.lto_priv.0>, static_metacall = 0x7f110faf3740 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x55d475f63a20}, static staticQtMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7f110fbd05c0 <_ZL21qt_meta_stringdata_Qt.lto_priv.0>, data = 0x7f110fbcd740 <_ZL15qt_meta_data_Qt.lto_priv.0>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x7f110fd40520 <QObject::staticMetaObject>}, stringdata = 0x7f11110ed700 <qt_meta_stringdata_KDBusService>, data = 0x7f11110ec6e0 <qt_meta_data_KDBusService>, static_metacall = 0x7f11110e31f0 <KDBusService::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d = {_M_t = {<std::__uniq_ptr_impl<KDBusServicePrivate, std::default_delete<KDBusServicePrivate> >> = {_M_t = std::tuple containing = {[1] = 0x55d4760df3b0, [2] = {<No data fields>}}, <No data fields>}}}
```
Comment 4 Nate Graham 2022-05-16 15:34:46 UTC
Thanks! Looks samey.

What icon theme are you using? If it's not "Breeze Icons", does the crash happen if you switch to "Breeze Icons"?
Comment 5 Marcos Gutiérrez Alonso 2022-05-16 15:39:25 UTC
(In reply to Nate Graham from comment #4)
> Thanks! Looks samey.
> 
> What icon theme are you using? If it's not "Breeze Icons", does the crash
> happen if you switch to "Breeze Icons"?

Indeed I'm using Relax-Dark-Icons (https://store.kde.org/p/1687609), I will switch to Breeze Dark and comment if/when a crash occurs

Thanks!
Comment 6 Marcos Gutiérrez Alonso 2022-05-19 17:45:26 UTC
(In reply to Nate Graham from comment #4)
> If it's not "Breeze Icons", does the crash happen if you switch to "Breeze Icons"?

I have tried it and it does not crash... In fact it does not crash anymore(?)

It's hard to say because I don't know *what* made it crash, so I just used it normally and after 3 days it has not crashed once (with "Breeze Icons" nor with the custom ones). I do update my computer regularly, so it might have fixed itself I guess?

Anyhow, sorry for making you lose your time. Will add more info to this thread if I happen to find out what crashed plasma or it crashes even with "Breeze Icons".

Thank you again!
Comment 7 Nate Graham 2022-05-23 14:18:20 UTC
Thanks!