Bug 504126 - kioworker thumbnail.so crashes with Oxygen on X11
Summary: kioworker thumbnail.so crashes with Oxygen on X11
Status: RESOLVED FIXED
Alias: None
Product: kio-extras
Classification: Frameworks and Libraries
Component: Thumbnails and previews (other bugs)
Version First Reported In: 25.04.0
Platform: Fedora RPMs Linux
: NOR crash
Target Milestone: ---
Assignee: Plasma Bugs List
URL:
Keywords: X11-only
: 504913 (view as bug list)
Depends on:
Blocks:
 
Reported: 2025-05-13 00:55 UTC by Loïc Yhuel
Modified: 2025-06-13 20:06 UTC (History)
7 users (show)

See Also:
Latest Commit:
Version Fixed In: 25.04.3
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Loïc Yhuel 2025-05-13 00:55:21 UTC
SUMMARY
Crash seen in logs on startup, and when launching dolphin

STEPS TO REPRODUCE
1. /usr/libexec/kf6/kioworker /usr/lib64/qt6/plugins/kf6/kio/thumbnail.so thumbnail "" local:/run/user/1000/dolphinVCPkXE.6.kioworker.socket

OBSERVED RESULT
crash

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: Fedora 41
KDE Plasma Version: 6.3.5
KDE Frameworks Version: 6.14.0 
Qt Version: 6.8.2

ADDITIONAL INFORMATION
It seems to be a regression from https://invent.kde.org/network/kio-extras/-/commit/e11dfd86bd075afc7ff5c5eec70bc5d2377c4168.

During the QGuiApplication constructor, KWindowSystem::platform()::s_platform is set to KWindowSystem::Platform::X11.
Then during the QApplication constructor, Oxygen calls KWindowSystem::isPlatformX11() which returns true, so it uses QX11Info::connection() as xcb_intern_atom argument. But we are on the "offscreen" platform now, so there is no xcb connection.

So KWindowSystem assumes the platform does not change, the kio-extra change breaks this assumption by changing QT_QPA_PLATFORM.

#0  initPlatform () at /usr/src/debug/kf6-kwindowsystem-6.14.0-1.fc41.x86_64/src/kwindowsystem.cpp:131
#1  KWindowSystem::platform () at /usr/src/debug/kf6-kwindowsystem-6.14.0-1.fc41.x86_64/src/kwindowsystem.cpp:152
#2  0x00007ffff22ee87d in KWindowSystem::isPlatformX11 () at /usr/src/debug/kf6-kwindowsystem-6.14.0-1.fc41.x86_64/src/kwindowsystem.cpp:158
#3  0x00007ffff054884a in KdePlatformTheme::KdePlatformTheme (this=0x55555560b440, this=<optimized out>) at /usr/src/debug/plasma-integration-6.3.5-1.fc41.x86_64/qt6/src/platformtheme/kdeplatformtheme.cpp:78
#4  0x00007ffff05569b2 in KdePlatformThemePlugin::create (this=<optimized out>, key=<optimized out>, paramList=<optimized out>) at /usr/src/debug/plasma-integration-6.3.5-1.fc41.x86_64/qt6/src/platformtheme/main.cpp:25
#5  0x00007ffff532dacf in qLoadPlugin<QPlatformTheme, QPlatformThemePlugin, QList<QString>&> (loader=0x7ffff5bdf820 <QGlobalStatic<QtGlobalStatic::Holder<(anonymous namespace)::Q_QGS_ptLoader> >::instance()::holder>, key=...)
    at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/plugin/qfactoryloader_p.h:100
#6  QPlatformThemeFactory::create (key=..., platformPluginPath=...) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/gui/kernel/qplatformthemefactory.cpp:27
#7  0x00007ffff52dbc22 in init_platform (pluginNamesWithArguments=..., platformPluginPath=..., platformThemeName=..., argc=@0x7fffffffca9c: 4, argv=argv@entry=0x7fffffffd6c8)
    at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/gui/kernel/qguiapplication.cpp:1354
#8  0x00007ffff52df678 in QGuiApplicationPrivate::createPlatformIntegration (this=0x5555555966d0) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/gui/kernel/qguiapplication.cpp:1580
#9  0x00007ffff52e00f0 in QGuiApplicationPrivate::createEventDispatcher (this=<optimized out>) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/gui/kernel/qguiapplication.cpp:1599
#10 0x00007ffff76fa885 in QCoreApplicationPrivate::init (this=this@entry=0x5555555966d0) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/kernel/qcoreapplication.cpp:931
#11 0x00007ffff52e3c5d in QGuiApplicationPrivate::init (this=0x5555555966d0) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/gui/kernel/qguiapplication.cpp:1627
#12 0x00007ffff52e58e5 in QGuiApplication::QGuiApplication (this=this@entry=0x7fffffffcaf0, argc=@0x7fffffffca9c: 4, argv=argv@entry=0x7fffffffd6c8) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/gui/kernel/qguiapplication.h:172
#13 0x00007ffff7f9e6c1 in kdemain (argc=<optimized out>, argc@entry=4, argv=0x7fffffffd6c8) at /usr/src/debug/kio-extras-25.04.0-1.fc41.x86_64/thumbnail/thumbnail.cpp:116

#0  0x00007ffff2e55c88 in xcb_send_request_with_fds64 (c=0x0, flags=flags@entry=1, vector=vector@entry=0x7fffffffc5e0, req=req@entry=0x7ffff2e6d760 <xcb_req>, num_fds=num_fds@entry=0, fds=fds@entry=0x0)
    at /usr/src/debug/libxcb-1.17.0-3.fc41.x86_64/src/xcb_out.c:233
#1  0x00007ffff2e5631f in xcb_send_request64 (c=<optimized out>, flags=flags@entry=1, vector=vector@entry=0x7fffffffc5e0, req=req@entry=0x7ffff2e6d760 <xcb_req>) at /usr/src/debug/libxcb-1.17.0-3.fc41.x86_64/src/xcb_out.c:353
#2  0x00007ffff2e5632d in xcb_send_request (c=<optimized out>, flags=flags@entry=1, vector=vector@entry=0x7fffffffc5e0, req=req@entry=0x7ffff2e6d760 <xcb_req>) at /usr/src/debug/libxcb-1.17.0-3.fc41.x86_64/src/xcb_out.c:359
#3  0x00007ffff2e577bb in xcb_intern_atom (c=<optimized out>, only_if_exists=<optimized out>, name_len=<optimized out>, name=<optimized out>) at /usr/src/debug/libxcb-1.17.0-3.fc41.x86_64/src/xproto.c:3224
#4  0x00007fffe80f7d22 in Oxygen::Helper::createAtom (this=<optimized out>, name=...) at /usr/src/debug/plasma-oxygen-6.3.5-1.fc41.x86_64/liboxygen/oxygenhelper.cpp:749
#5  Oxygen::Helper::createAtom (this=this@entry=0x5555559ca800, name=...) at /usr/src/debug/plasma-oxygen-6.3.5-1.fc41.x86_64/liboxygen/oxygenhelper.cpp:745
#6  0x00007fffe818a653 in Oxygen::StyleHelper::init (this=0x5555559ca800) at /usr/src/debug/plasma-oxygen-6.3.5-1.fc41.x86_64/kstyle/oxygenstylehelper.cpp:1410
#7  Oxygen::StyleHelper::init (this=0x5555559ca800) at /usr/src/debug/plasma-oxygen-6.3.5-1.fc41.x86_64/kstyle/oxygenstylehelper.cpp:1402
#8  Oxygen::StyleHelper::StyleHelper (this=0x5555559ca800, config=...) at /usr/src/debug/plasma-oxygen-6.3.5-1.fc41.x86_64/kstyle/oxygenstylehelper.cpp:35
#9  Oxygen::Style::Style (this=0x5555559ca720, this=<optimized out>) at /usr/src/debug/plasma-oxygen-6.3.5-1.fc41.x86_64/kstyle/oxygenstyle.cpp:188
#10 0x00007fffe81c363a in Oxygen::StylePlugin::create (this=<optimized out>, key=<optimized out>) at /usr/src/debug/plasma-oxygen-6.3.5-1.fc41.x86_64/kstyle/oxygenstyleplugin.cpp:17
#11 0x00007ffff18ec69e in qLoadPlugin<QStyle, QStylePlugin> (loader=0x7ffff1fd29f0 <QGlobalStatic<QtGlobalStatic::Holder<(anonymous namespace)::Q_QGS_loader> >::instance()::holder>, key=...)
    at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/plugin/qfactoryloader_p.h:100
#12 QStyleFactory::create (key=...) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/widgets/styles/qstylefactory.cpp:77
#13 0x00007ffff18438d0 in QApplication::style () at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/widgets/kernel/qapplication.cpp:915
#14 0x00007ffff1843f21 in QApplicationPrivate::initialize (this=this@entry=0x55555579a610) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/widgets/kernel/qapplication.cpp:540
#15 0x00007ffff1844145 in QApplicationPrivate::init (this=0x55555579a610) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/widgets/kernel/qapplication.cpp:487
#16 0x00007ffff18441cd in QApplication::QApplication (this=<optimized out>, argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/widgets/kernel/qapplication.cpp:462
#17 0x00007ffff7f9e7ac in kdemain (argc=<optimized out>, argc@entry=4, argv=0x7fffffffd6c8) at /usr/src/debug/kio-extras-25.04.0-1.fc41.x86_64/thumbnail/thumbnail.cpp:127
#18 0x00005555555554ed in main (argc=5, argv=0x7fffffffd858) at /usr/src/debug/kf6-kio-6.14.0-3.fc41.x86_64/src/kioworker/kioworker.cpp:144
Comment 1 Sérgio Basto 2025-05-13 18:19:08 UTC
I have the same problem preview stop to work when I choose on settings -> application style -> oxygen and window decoration ->oxygen , but 
even with previews working with breeze application style . kioworker crash a lot on dolphin 

Tue 2025-05-13 19:16:19 WEST   74357 1000 1000 SIGSEGV present  /usr/libexec/kf6/kioworker                                                                                 >
Tue 2025-05-13 19:16:22 WEST   74374 1000 1000 SIGSEGV present  /usr/libexec/kf6/kioworker                                                                                 >
Tue 2025-05-13 19:16:23 WEST   74389 1000 1000 SIGSEGV present  /usr/libexec/kf6/kioworker  

coredumpctl info -1
          PID: 74619 (kioworker)
           UID: 1000 (sergio)
           GID: 1000 (sergio)
        Signal: 11 (SEGV)
     Timestamp: Tue 2025-05-13 19:16:43 WEST (19s ago)
  Command Line: /usr/libexec/kf6/kioworker /usr/lib64/qt6/plugins/kf6/kio/thumbnail.so thumbnail "" local:/run/user/1000/dolphinagjOzn.19.kioworker.socket
    Executable: /usr/libexec/kf6/kioworker
 Control Group: /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.kde.dolphin@845b870f508f4402b583f85c1047f809.service
          Unit: user@1000.service
     User Unit: app-org.kde.dolphin@845b870f508f4402b583f85c1047f809.service
         Slice: user-1000.slice
     Owner UID: 1000 (sergio)

       Storage: /var/lib/systemd/coredump/core.kioworker.1000.b4fb919000584c698323acf0162c762b.74619.1747160203000000.zst (present)
  Size on Disk: 13.9M
       Package: kf6-kio/6.13.0-1.fc41
      build-id: faa5a08dbb3c419623585b98750b33ba7e119325
Comment 2 Konstantin Ivanov 2025-05-13 18:28:09 UTC
Thank you. I confirm that. Should we just abandon offscreen for X11?
Comment 3 Konstantin Ivanov 2025-05-13 18:31:09 UTC
(In reply to Sérgio Basto from comment #1)
> I have the same problem preview stop to work when I choose on settings ->
> application style -> oxygen and window decoration ->oxygen , but 
> even with previews working with breeze application style . kioworker crash a
> lot on dolphin 
> 
> Tue 2025-05-13 19:16:19 WEST   74357 1000 1000 SIGSEGV present 
> /usr/libexec/kf6/kioworker                                                  
> >
> Tue 2025-05-13 19:16:22 WEST   74374 1000 1000 SIGSEGV present 
> /usr/libexec/kf6/kioworker                                                  
> >
> Tue 2025-05-13 19:16:23 WEST   74389 1000 1000 SIGSEGV present 
> /usr/libexec/kf6/kioworker  
> 
> coredumpctl info -1
>           PID: 74619 (kioworker)
>            UID: 1000 (sergio)
>            GID: 1000 (sergio)
>         Signal: 11 (SEGV)
>      Timestamp: Tue 2025-05-13 19:16:43 WEST (19s ago)
>   Command Line: /usr/libexec/kf6/kioworker
> /usr/lib64/qt6/plugins/kf6/kio/thumbnail.so thumbnail ""
> local:/run/user/1000/dolphinagjOzn.19.kioworker.socket
>     Executable: /usr/libexec/kf6/kioworker
>  Control Group:
> /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.kde.
> dolphin@845b870f508f4402b583f85c1047f809.service
>           Unit: user@1000.service
>      User Unit: app-org.kde.dolphin@845b870f508f4402b583f85c1047f809.service
>          Slice: user-1000.slice
>      Owner UID: 1000 (sergio)
> 
>        Storage:
> /var/lib/systemd/coredump/core.kioworker.1000.
> b4fb919000584c698323acf0162c762b.74619.1747160203000000.zst (present)
>   Size on Disk: 13.9M
>        Package: kf6-kio/6.13.0-1.fc41
>       build-id: faa5a08dbb3c419623585b98750b33ba7e119325

Sérgio, is it also on X11?
Comment 4 Sérgio Basto 2025-05-13 18:39:11 UTC
(In reply to Konstantin Ivanov from comment #2)
> Thank you. I confirm that. Should we just abandon offscreen for X11?

I don't know.
This evening I will check the commit and I will check on wayland , I think also got crashs with kioworker on wayland .

I have NVIDIA GeForce GTX 1050 and an integrated  Intel® UHD Graphics 630, I tested disabled nvidia and use only the Intel and I got the same results  

Operating System: Fedora Linux 41
KDE Plasma Version: 6.3.5
KDE Frameworks Version: 6.13.0
Qt Version: 6.8.2
Kernel Version: 6.14.6-200.fc41.x86_64 (64-bit)
Graphics Platform: X11
Comment 5 Loïc Yhuel 2025-05-13 19:43:28 UTC
(In reply to Konstantin Ivanov from comment #2)
> Should we just abandon offscreen for X11?
There would probably still be something which would call KWindowSystem::platform() on the wayland platform.
The after switching to offscreen, KWindowSystem::isPlatformWayland() would still return true, which might cause issues in the style or elsewhere.

This is even documented in kwindowsystem.h for KWindowSystem::platform() :
The Platform gets resolved the first time the method is invoked and cached for further usages.

I only see two ways to properly switch to offscreen :
 - use another way to get themeName, to avoid the creation of the QGuiApplication in the main process : maybe a dedicated subprocess, or a fork()
 - add something like KWindowSystem::resetPlatform() to reset the cached value
Comment 6 Yi Yang 2025-05-13 20:03:08 UTC
This also happens to me (I'm on Gentoo) for both kio 6.13 and 6.14. I am on X11.

For Fedora, I have noticed that this problem seems to have a pretty high count on ABRT analytics:

https://retrace.fedoraproject.org/faf/problems/bthash/?bth=70f8d1c8b9575b220c4c0306626a422224cafcf7
Comment 7 Konstantin Ivanov 2025-05-13 20:34:39 UTC
(In reply to Yi Yang from comment #6)
> For Fedora, I have noticed that this problem seems to have a pretty high
> count on ABRT analytics:

That's pretty bad. The way I see it now it's basically guaranteed to crash under X11.
 
(In reply to Loïc Yhuel from comment #5)
> I only see two ways to properly switch to offscreen :
>  - use another way to get themeName, to avoid the creation of the
> QGuiApplication in the main process : maybe a dedicated subprocess, or a
> fork()
>  - add something like KWindowSystem::resetPlatform() to reset the cached
> value

Thanks for the information. I'll try to look into that, but I hope someone experienced gets involved because I know almost nothing about KDE internals or Qt.

The history of this is the following: there's a Wayland-only bug for generating HTML previews https://bugs.kde.org/show_bug.cgi?id=500173 that happens because of Qt bug https://bugreports.qt.io/browse/QTBUG-134012
My two or three commits are a hackish workaround that doesn't work for X11, as I've now realized. So basically the current situation is either Wayland users should live without HTML previews (without my fix they have to be turned off, otherwise they disrupt the workflow), or X11 users should live without previews at all. The latter option seems to be grossly unfair, while the former is just a small inconvenience.
Comment 8 Sérgio Basto 2025-05-13 23:36:53 UTC
revert  
https://invent.kde.org/network/kio-extras/-/commit/e11dfd86bd075afc7ff5c5eec70bc5d2377c4168 and previous commit https://invent.kde.org/network/kio-extras/-/commit/1fe1548a7e595107d5ed00b30b031b74ac658ed4  fixes kioworker crashes 

but I have other crash , for example when lunch steam from kde left panel , some other things are fixed liked in desktop settings previews of wallpaper images , also previews seems to work with oxygen theme
Comment 9 Sérgio Basto 2025-05-14 11:43:10 UTC
(In reply to Sérgio Basto from comment #8)
in resume, thanks the main issues are all fixed (with revert of the two commits mentioned)
Comment 10 Sérgio Basto 2025-05-18 03:43:03 UTC
Hi,
(In reply to Konstantin Ivanov from comment #2)
> Thank you. I confirm that. Should we just abandon offscreen for X11?

I had fixed more 2 bugs that I found , one not related https://bugs.kde.org/show_bug.cgi?id=488326#c115
but the crash when I try start Steam from kde left panel is related, in the matter that  the problem is  "PrefersNonDefaultGPU=true from .desktop file of Steam" https://github.com/ValveSoftware/steam-for-linux/issues/9940 
removing PrefersNonDefaultGPU=true from steam.desktop make Steam work.
I guess the problem is when offscreen is set, somehow offscreen is set to use the integrated GPU instead the defaultGPU (which in my case is the discrete GPU) .
Also that is why `kcmshell6 kcm_qtquicksettings is important to set the correct rendering backend . In resume when KDE try use the integrated GPU to render it crash I guess , is sort of a problem when is not using the default GPU , i.e. the problem is not set offscreen in the app (I think wayland also have the same kind of problem)  , the problem is offscreen that crash and should work and it was working in previous versions , I think . 
In the case when is enabled discrete GPU by default, shouldn't be a problem some graphics not being rendered by the discrete GPU
Comment 11 Bug Janitor Service 2025-05-27 19:29:14 UTC
A possibly relevant merge request was started @ https://invent.kde.org/network/kio-extras/-/merge_requests/440
Comment 12 Nicolas Fella 2025-05-29 11:39:34 UTC
*** Bug 504913 has been marked as a duplicate of this bug. ***
Comment 13 Poci 2025-05-29 13:48:03 UTC
My bug report @ https://bugs.kde.org/show_bug.cgi?id=503799 is also related. Hopefully the above commit will fix up thumbnails on X11.
Comment 14 Nicolas Fella 2025-06-13 11:33:05 UTC
Git commit c926156c88b64cd810b232563dd4d28841841ef2 by Nicolas Fella.
Committed on 13/06/2025 at 10:05.
Pushed by nicolasfella into branch 'master'.

[thumbnail] Don't create a temporary QApplication to determine the platformtheme name

The current code creates a qapp to query the platform theme name and use that to
configure the actual qapp.

We do that since we want to use the offscreen platformtheme with our actual platformtheme
plugin.

However by instantiating the KDEPlatformTheme we trigger KWindowSystem's platform detection
code, which will cache the platform information (X11 or Wayland). Later we want that to be
'Unknown' though.

This trips up other code that relies on the KWindowSystem platform check before doing
windowsystem-specific stuff.

What we really want is a way to obtain the platformtheme name without creating an actual
instance.

Qt doesn't have API to do that, so copy the bit of code that determines the platform from
QGenericUnixServices

M  +0    -9    thumbnail/CMakeLists.txt
M  +86   -13   thumbnail/thumbnail.cpp

https://invent.kde.org/network/kio-extras/-/commit/c926156c88b64cd810b232563dd4d28841841ef2
Comment 15 Nicolas Fella 2025-06-13 12:20:34 UTC
Git commit 65bbd59f7101a1178633ff70dd0f31590257a96f by Nicolas Fella.
Committed on 13/06/2025 at 12:20.
Pushed by nicolasfella into branch 'release/25.04'.

[thumbnail] Don't create a temporary QApplication to determine the platformtheme name

The current code creates a qapp to query the platform theme name and use that to
configure the actual qapp.

We do that since we want to use the offscreen platformtheme with our actual platformtheme
plugin.

However by instantiating the KDEPlatformTheme we trigger KWindowSystem's platform detection
code, which will cache the platform information (X11 or Wayland). Later we want that to be
'Unknown' though.

This trips up other code that relies on the KWindowSystem platform check before doing
windowsystem-specific stuff.

What we really want is a way to obtain the platformtheme name without creating an actual
instance.

Qt doesn't have API to do that, so copy the bit of code that determines the platform from
QGenericUnixServices
(cherry picked from commit c926156c88b64cd810b232563dd4d28841841ef2)

M  +0    -9    thumbnail/CMakeLists.txt
M  +86   -13   thumbnail/thumbnail.cpp

https://invent.kde.org/network/kio-extras/-/commit/65bbd59f7101a1178633ff70dd0f31590257a96f