Microsoft ships PowerToys Release Preview v0.102.2993 with two crash fixes
Microsoft's latest PowerToys preview trades new features for two reliability fixes aimed at long-troubled crashes in File Locksmith and Quick Accent.
Microsoft released PowerToys Release Preview v0.102.2993 today, and the package is intentionally small. Two reliability fixes. No new features. That's the whole story, and for once that's fine.
PowerToys is Microsoft's free, open-source toolbox of more than 30 utilities for people who want to do more with Windows than the stock OS provides. FancyZones for window layouts, PowerToys Run for quick launching, Keyboard Manager, Color Picker, Image Resizer. It's the kind of thing you install and forget until one module quietly starts crashing.
The 0.102.2993 preview was pushed by core contributor Boliang Zhang on GitHub. It's built from commit a00b2bc of the main branch, sitting just above the stable v0.102.2933.0, which landed a week earlier on October 21. The higher build number (2993 against 2933) just signals an incremental step on top of that stable release.
Microsoft describes this build as "intended for validation before a stable release." The plain reading is that you only need it if you actively want to catch regressions before they reach the stable channel.
File Locksmith finally gets a handle on its crashes
The more interesting of the two fixes targets File Locksmith, a utility that shows which processes have a file or folder open. Right-click a locked file, pick the option, and it walks you through the holding processes so you can end them.
For months it crashed instead. The issue dates back to at least v0.97.0 and logged dozens of reports in GitHub issue #45158, opened on January 28. The window would spin for a couple seconds, then hard-crash. Sometimes mid-scan, sometimes seconds later when you clicked End task. The crash code was 0xC0000005, an access violation buried in PowerToys.FileLocksmithLib.Interop.dll.
The crash was independent of whether a file was locked at all. An empty temp directory would trip it, which pointed at a memory-lifetime problem rather than bad input.
The root cause took a little forensics to pin down. As Microsoft's Clint Rutkas (crutkas) wrote in PR #51507, File Locksmith offloaded its handle-scan loop to a detached thread that captured local variables by reference. A stall watchdog then called TerminateThread on the thread after it had already been detached, which left a null handle. The abandoned thread kept running, reading and writing a stack that no longer existed. It's a textbook use-after-free.
A contributor named headsvk went so far as to use Claude Code to disassemble the faulting binary without a debug symbols file. "Every fault is a read through an invalid pointer, at three different sites, intermittently, on the same operation," he wrote. "That is a lifetime bug rather than a missing null check." Fair enough.
Rutkas rewrote the threading model entirely. The scan now runs on the calling thread, with only the genuinely blocking calls pushed to a helper thread that uses a reference-counted memory block and no C++ runtime. When a query stalls, an interlocked handshake hands off handle ownership so the stalled work can be abandoned safely. There was an earlier shared_ptr attempt that fixed the crash but deadlocked at exit; this final version sidesteps that.
The validation numbers are telling. In an A/B test on an ARM64 machine running 25 installs each of the buggy and fixed builds, the broken version threw four access violations and one hang across 50 runs. The fixed build logged zero crashes and zero hangs. XenoPanther, who supplied the decisive crash dump, closed issue #45158 as resolved.
Quick Accent and the blank-first-frame trade-off
The second fix is smaller in scope but just as specific. Quick Accent lets you type accented characters like é or ñ that your keyboard layout doesn't already provide. Hold a base key and move through a popup list to pick the character you want.
The crash happened after switching languages or moving from a shorter character list to a longer one. Press an arrow key and the module would die with a native exception (e06d7363) followed by a fatal exit in ucrtbase.dll.
The culprit traces back to a change earlier this cycle. A prior fix (#49633) deliberately stopped clearing the character list when the popup was hidden, purely to dodge a blank first frame on reopen. That optimization set up a subtle race: when you switched languages, the initial arrow-selection index could land against stale items from the previous gesture before the new list finished loading.
The fix defers the cached selection until the current list is actually ready to display. Live scrolling stays instant, and the blank-frame protection from the earlier change is preserved. Boliang Zhang documented one curious detail honestly: the crash reproduced cleanly in Release builds but not Debug, and he didn't try to paper over the discrepancy.
It's not that the 0.102 line is thin, though. That stable release shipped a wave of additions this month: two brand-new mouse utilities called Mouse Button Lock and CursorHide, a quick-access shelf for Command Palette, snip dictation in ZoomIt, and command-line tools for scripting Advanced Paste, Light Switch, Settings, and Peek from any terminal folder. Keyboard Manager gained tap-alone remaps, and Color Picker and Text Extractor moved to the WinUI 3 framework. It's quite a lot to inherit.
For most Windows users, PowerToys is an install-it-and-forget-it productivity boost, which makes these kinds of native-memory bugs easy to take for granted. Fixing a use-after-free this deeply embedded takes crash-dump forensics and community-sourced reproductions, not a weekend side project. Builds like this are a reminder of the quiet maintenance behind free, open system software.
The preview is live now on the PowerToys GitHub releases page, with signed per-user and machine-wide installers for both x64 and ARM64. SHA-256 hashes are published for verification, so you can check the binaries before running them.
If you're a typical user, wait for the next stable release. If you run QA or just like living on the edge, install it and report whatever breaks.
Head here to the GitHub releases page to grab the binaries.
