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")
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)