DeskScapes appears to leak GDI regions in explorer.exe
App Version: 26.0.0.1
It appears that with DeskScapes loaded, explorer.exe steadily accumulates GDI objects, mostly Region objects, until it reaches the 10,000 per-process limit. Explorer then either hangs (taskbar partly unresponsive, Ctrl + Alt + Del unreliable) or terminates itself via explorer!CTray::CheckGDIHandleLimit (fail-fast, 0xc0000409). With DeskScapes unloaded and Fences and Start11 still active, Explorer's GDI count stayed flat (about 360) for 17+ hours.
Environment
- Windows 11 Insider, build 28120
- DeskScapes 26.0.0.1, single static image (no Dream, no playlist, no desktop effects)
- Fences 6.5.8, Start11 2.8.1.0
- NVIDIA GeForce RTX 3080; Dell UltraSharp 43 (U4320Q, 4K) primary, Wacom Cintiq 16 (1080p) secondary (usually off; display mode set to "PC screen only" during testing)
Observations
I logged Explorer's GDI and USER object counts every 5 minutes with GetGuiResources.
- With DeskScapes loaded: GDI grew by hundreds to thousands per hour during normal use. While the PC was idle, it also stepped up once an hour, consistently between about :05 and :10 past the hour (+375 to +1,032 per step). Overnight it reached 10,000 and stayed pinned, leaving Explorer partly hung by morning.
- Isolation tests, unloading each product from explorer.exe and confirming with Process Explorer's Find Handle or DLL:
- Start11 unloaded (Fences and DeskScapes active): the leak and the hourly steps continued.
- DeskScapes unloaded (Fences only): flat at about 357–371 for 17+ hours, with no hourly steps.
- DeskScapes reloaded (wallpaper file pinned locally): GDI rose from 361 to over 1,700 within minutes of normal use.
- DeskScapes uninstalled (Fences and Start11 active): stable under 500.
- Ruled out as triggers: Windows' background setting is "Picture" (no slideshow or Spotlight); DeskScapes desktop effects were off. The wallpaper image originally sat in a OneDrive Files On-Demand folder that was not set to "Always keep on this device"; pinning it locally did not stop the leak.
- Crash evidence: a full dump of one crash shows
explorer!CTray::CheckGDIHandleLimitat the top of the stack, with Start10_64 and DesktopDock64 frames in the message chain. It appears those modules were only handling a message when the limit tripped, not that they caused the leak.
For now, I've uninstalled DeskScapes.
I'm curious what DeskScapes might be doing on an hourly timer when it's showing a single static image.
Hopefully this report helps you sort out the problem.