microsoft / microsoft/PowerToys

BSOD triggered when AlwaysOnTop module is enabled, especially around display sleep/reconfiguration

Open
#50,143 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Issue-Bug Needs-Team-Response Needs-Triage Product-Always On Top
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.