Skip to content

[BUG] Quickshell crash on Bluetooth toggle allows manual infinite bar duplication via UI clicks #91

Description

@Lucky-Cyan
Image

Overview

Toggling the Bluetooth radio off/on causes Quickshell to crash. After the initial crash recovery (which spawns a second bar), clicking on any module within the broken bar manually spawns an additional duplicate bar instance without killing the previous ones. Repeating this interaction stacks multiple bar processes, eventually pinning CPU utilization above 90% and spiking temperatures to 97°C.

Steps to Reproduce

Connect multiple Bluetooth devices (e.g., Airdopes 141, Kreo Swarm).

Toggle the system Bluetooth radio OFF and then ON (done to refresh missing battery status).

A system notification appears stating: "Quickshell has crashed".

The system attempts recovery, resulting in two overlapping bars.

Click any module on the panel.

Observe that a brand new bar instance is spawned with every click. Stacking multiple bars this way drives CPU utilization past 90%.

Expected Behavior

If Quickshell crashes due to a null device state, the background recovery script should cleanly kill the previous zombie instance before spawning a new one. Furthermore, broken UI modules should not be able to trigger new instances of the entire shell upon interaction.

System Environment

OS: Arch Linux (rolling)

WM: Hyprland

Quickshell: 0.3.0 (AUR quickshell-git)

Hardware: Intel i5-12450H / NVIDIA RTX 2050 (GA107)

Crash Log (report.txt)

Quickshell: 0.3.0 (revision 7d1c9a9c6721606b129829134d6f614f015621e2, distributed by AUR (package: quickshell-git))
Qt: 6.11.1 (built against 6.11.1)

===== Instance Information =====
Signal: Segmentation fault (11)
Crashed process ID: 3240492
Run ID: crhhm9ft
Shell ID: b0918aca76eee1c8c53a208bdfe1616d
Config Path: /home/herox/.config/hypr/scripts/quickshell/Shell.qml

===== Stacktrace =====
#0  0x00007f52fb23e8ef at /usr/bin/../lib/libc.so.6
#1  0x00007f52fb04de40 at /usr/bin/../lib/libQt6QmlModels.so.6
#2  0x00007f52fb04333a at /usr/bin/../lib/libQt6QmlModels.so.6
#3  0x00007f52fb05ad8a at /usr/bin/../lib/libQt6QmlModels.so.6
#4  0x00007f52fd9722be in QQuickRepeater::clear() at /usr/bin/../lib/libQt6Quick.so.6
#5  0x00007f52fd97290d in QQuickRepeater::setModel(QVariant const&) at /usr/bin/../lib/libQt6Quick.so.6
#6  0x00007f52fc68a6ca at /usr/bin/../lib/libQt6Qml.so.6
#7  0x00007f52fc773ff7 in QQmlPropertyPrivate::write(QObject*, QQmlPropertyData const&, QVariant const&, QQmlRefPointer<QQmlContextData> const&, QFlags<QQmlPropertyData::WriteFlag>) at /usr/bin/../lib/libQt6Qml.so.6
#8  0x00007f52fc6a3810 in QQmlBinding::slowWrite(QQmlPropertyData const&, QQmlPropertyData const&, QV4::Value const&, bool, QFlags<QQmlPropertyData::WriteFlag>) at /usr/bin/../lib/libQt6Qml.so.6
#9  0x00007f52fc6aa2e8 at /usr/bin/../lib/libQt6Qml.so.6
#10 0x00007f52fc6a6fd4 in QQmlBinding::doUpdate(QQmlJavaScriptExpression::DeleteWatcher const&, QFlags<QQmlPropertyData::WriteFlag>, QV4::Scope&) at /usr/bin/../lib/libQt6Qml.so.6

===== Log Tail =====
2026-05-19 11:58:23.000 DEBUG quickshell.interceptor: Rewrote intercept QUrl("qs:@/qs/network/sounds/power_off.wav") to QUrl("file:///home/herox/.config/hypr/scripts/quickshell/network/sounds/power_off.wav")
2026-05-19 11:58:23.000  WARN qt.qml.context: qs:@/qs/network/NetworkPopup.qml:231:9 Parameter "exitCode" is not declared.
Injection of parameters into signal handlers is deprecated. Use JavaScript functions with formal parameters instead.
2026-05-19 11:58:23.000  WARN scene: @network/NetworkPopup.qml[1744:-1]: ReferenceError: isHighlighted is not defined
2026-05-19 11:58:23.000  WARN scene: @network/NetworkPopup.qml[1751:-1]: ReferenceError: locksList is not defined
2026-05-19 11:58:23.000  WARN scene: @network/NetworkPopup.qml[1762:-1]: ReferenceError: locksList is not defined
2026-05-19 11:58:25.000 DEBUG quickshell.interceptor: Rewrote intercept QUrl("qs:@/qs/network/sounds/power_on.wav") to QUrl("file:///home/herox/.config/hypr/scripts/quickshell/network/sounds/power_on.wav")

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions