Skip to content

plasmashell SIGABRT when polling wallpaper via D-Bus while wallpaper config dialog is open #346

Description

@wpaalperen

Describe the bug

Calling org.kde.PlasmaShell.wallpaper(uint) via D-Bus while the wallpaper configuration dialog is open and switching plugin types causes plasmashell to abort with SIGABRT. Since kde-material-you-colors polls this method every ~1 second by default, simply opening the wallpaper settings and changing the wallpaper type kills the desktop.

The crash originates in plasma-workspace/shell/shellcorona.cpp (ShellCorona::wallpaper): when the config dialog is mid-switch between plugin types, config->value(itemName) returns an invalid QVariant(). This gets inserted into the QVariantMap sent over D-Bus. QDBusMarshaller cannot serialize a null QDBusVariant, triggering a libdbus assertion failure in dbus_message_iter_close_container() which aborts plasmashell.

To Reproduce

  1. Start kde-material-you-colors with default settings (no --screenshot-only-mode)
  2. Right-click desktop → Configure Desktop and Wallpaper
  3. Change wallpaper type (e.g. from "Picture of the Day" to "Image")
  4. plasmashell crashes with SIGABRT within 1 second

Expected behavior

The D-Bus method should either return valid data or a proper D-Bus error — not crash plasmashell.

Terminal output (full log)

[I] main: main: ###### STARTED NEW SESSION v2.2.0 ######
[D] main: main: Installed in /home/user/.../kde_material_you_colors
[D] config: eval_conf: Config "on_change_hook": empty, using fallback: None
[D] config: eval_conf: Config "color": empty, using fallback: None
[D] config: eval_conf: Config "custom_colors_list": empty, using fallback: None
[D] config: eval_conf: Config "darker_window_list": empty, using fallback: None
[D] main: main: {'light': False, 'file': None, 'monitor': 0, 'ncolor': 0, 'iconslight': 'Fluent', 'iconsdark': 'Fluent-dark', 'pywal': True, 'pywal_light': False, 'light_blend_multiplier': 1, 'dark_blend_multiplier': 1, 'on_change_hook': None, 'sierra_breeze_buttons_color': False, 'disable_konsole': False, 'titlebar_opacity': 100, 'titlebar_opacity_dark': 100, 'toolbar_opacity': 100, 'toolbar_opacity_dark': 100, 'konsole_opacity': 100, 'konsole_opacity_dark': 100, 'konsole_blur': True, 'color': None, 'klassy_windeco_outline': False, 'titlebar_opacity_override': False, 'custom_colors_list': None, 'darker_window_list': None, 'use_startup_delay': False, 'startup_delay': 0, 'plasma_follows_scheme': False, 'pywal_follows_scheme': False, 'main_loop_delay': 1.0, 'screenshot_delay': 900.0, 'once_after_change': False, 'pause_mode': False, 'screenshot_only_mode': False, 'scheme_variant': 8, 'chroma_multiplier': 2.2, 'tone_multiplier': 1.0, 'frame_contrast': 0.2, 'contrast_level': 0.0, 'qdbus_executable': None, 'manual_fetch': False, 'fetch_colors': False, 'spec_version': '2025', 'kde_rounded_corners_effect_outline': False}
[I] main: main: Wallpaper: org.kde.potd (image): /home/user/.cache/plasma_engine_potd/bing:3840:2160
[I] m3_scheme_utils: get_color_schemes: Best colors: 0:#dc6354 1:#346eac 2:#3a232b 3:#5b5c83 4:#f49038 5:#341b37 6:#dcc69f
[I] m3_scheme_utils: get_color_schemes: Using seed: 0:#dc6354
[I] plasma_utils: apply_color_schemes: MaterialYouDark color scheme applied
[I] konsole_utils: get_default_profile: Found default profile 'Profile 1.profile'
[D] konsole_utils: reload_profile: Konsole services (windows) running: 1
[W] konsole_utils: reload_profile: Konsole profile switch skipped (access denied or unavailable): ...
[I] pywal_utils: apply_schemes: Setting pywal colors...
[W] wallpaper_utils: get_wallpaper_config: Wallpaper DBus API error: Remote peer disconnected
[W] wallpaper_utils: reload: Could not get wallpaper config from D-Bus: Remote peer disconnected
[E] kwin_utils: get_desktop_window_id: Error running script with id 0: No such object path '/Scripting/Script0'
[E] wallpaper_utils: get_desktop_screenshot: org.freedesktop.DBus.Error.UnknownObject: No such object path '/Scripting/Script0'
[E] wallpaper_utils: screenshot: org.freedesktop.DBus.Error.UnknownObject: No such object path '/Scripting/Script0'
[E] main: main: Could not get wallpaper org.freedesktop.DBus.Error.UnknownObject: No such object path '/Scripting/Script0'

The Remote peer disconnected line is the moment plasmashell died (SIGABRT). The subsequent KWin errors are secondary — the screenshot fallback also fails because KWin's scripting interface is temporarily unavailable after the crash.

coredumpctl backtrace (plasmashell)

Signal: 6 (ABRT)
#0  __pthread_kill_implementation (threadid=…, signo=6) at pthread_kill.c:44
#1  raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:27
#2  abort () at abort.c:81
#3  qt_message_fatal (…) at global/qlogging.cpp
#4  QDBusMarshaller::addBasicType (…)
#5  dbus_message_iter_close_container (libdbus-1.so.3)

Desktop (please complete the following information):

  • Operating System: Arch Linux
  • KDE Plasma Version: 6.3.5 (plasmashell 6.7.4)
  • KDE Frameworks Version: 6.11
  • Qt Version: 6.11.1
  • Graphics Platform: Wayland
  • kde-material-you-colors version: 2.2.0

Additional context

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingupstream

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions