microsoft / microsoft/PowerToys
BSOD triggered when AlwaysOnTop module is enabled, especially around display sleep/reconfiguration
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 139k
- Forks
- 8.6k
- PR merge metrics
- PR metrics pending
Description
### Microsoft PowerToys version
0.100.2
### Installation method
GitHub
### Area(s) with issue?
Always on Top
### Steps to reproduce
1. Enable the AlwaysOnTop module (no window needs to actually be pinned - module just needs to be running).
2. Use a multi-monitor setup (2x 1440p @ 180Hz over DisplayPort in my case).
3. Trigger a display power state change repeatedly over time - e.g. let the system enter sleep (S3) and wake it, or manually power-cycle one monitor while the other stays on, or lock the session (Win+L) and let displays time out.
4. After a number of such display reconfiguration events the system BSODs with UNEXPECTED_KERNEL_MODE_TRAP (0x7F), bugcheck param 1 = 8 (double fault).
I collected 3 separate crash dumps over about 2 weeks, all with an identical failure signature (only the module base address differed between boots, low-order offset in the crashing routine was identical each time):
FAILURE_BUCKET_ID: 0x7f_8_STACK_USAGE_RECURSION_win32kbase!vUnreferencePdevWorker
STACKUSAGE_FUNCTION: recursion through PDEVOBJ::vUnreferencePdevFast -> PDEVOBJ::vUnreferencePdev -> MulDisablePDEV -> vUnreferencePdevWorker (97 nested calls in the dump I ran !analyze -v on), exhausting the kernel stack.
PROCESS_NAME in the crashing thread context: PowerToys (PowerToys.PowerLauncher / runner)
After disabling the AlwaysOnTop module specifically (while keeping other modules like PowerToys Run, ColorPicker, AdvancedPaste enabled), the crash has not recurred through the same display-cycling scenarios that reliably triggered it before.
I ruled out several other causes first (AMD GPU driver/undervolt/ULPS registry tweaks, chipset driver update, BIOS update, PCIe ASPM, HAGS/windowed-game-optimization) - none of those affected this particular BSOD signature. FancyZones was already disabled the whole time, so this seems specific to AlwaysOnTop's window/monitor event hooking interacting with win32k's PDEV lifecycle during display reconfiguration.
### ✔️ Expected Behavior
Display sleep/wake or monitor power-cycling should not cause a kernel-mode crash, regardless of which PowerToys modules are running in the background.
### ❌ Actual Behavior
System BSODs with UNEXPECTED_KERNEL_MODE_TRAP (0x7F), caused by a stack overflow from recursive calls in win32kbase!vUnreferencePdevWorker, while the AlwaysOnTop module is enabled. Disabling AlwaysOnTop stopped the crashes from recurring.
### Upload Bug Report ZIP-file
[PowerToysReport_2026-08-21-12-52-27.zip](https://github.com/user-attachments/files/31475845/PowerToysReport_2026-08-21-12-52-27.zip)
### Additional Information
OS Version: Microsoft Windows NT 10.0.26100.0
.NET Version: .NET 10.0.9
PowerToys is running as user (non-elevated)
Install scope: per machine (system)
Operating System Language: русский (Россия)
System locale: ru-RU
### Other Software
Windhawk 1.7.3 with only 2 modules: Windows 11 Taskbar Styler and Taskbar Background Helper.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the attached crash-dump report and the AlwaysOnTop module, then reproduce repeated display sleep, wake, and monitor power-cycle events. Trace the module's window and monitor event handling against the reported recursive win32kbase stack; done means these display reconfiguration scenarios no longer produce a BSOD.
Written by the indexing model from the issue text.
Assessment
- Domain
- desktop, operating-systems
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100