Skip to content

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 22:14
· 7 commits to main since this release

What's new

0.9.0 makes the verdicts sharper and puts the program you were using at the center of the report.

The program you were using comes first

The tool notes once a second which program's window is in front (the process only, never window titles). When that program was among those kept waiting, at a stall, a moment you flagged or behind a slow disk, the report names it first: "the program you were using, game.exe, waited 1.2 s". At a flagged moment it also says when your program was not among them, which points the search elsewhere.

Sharper verdicts

  • Short stalls get the same checks as whole-PC freezes: which device interrupts stopped or kept arriving, whether the timer that wakes sleeping threads kept firing, and which slow disk requests coincided. A stall where the measuring thread was itself waiting for a disk read is now called what it is.
  • One busy core is no longer averaged away. CPU starvation is judged per processor, counting interrupt-level work as busy, so "one core was busy while the others idled" is said, with what held it.
  • Context for every stall: which priority range a waiting thread was in, and whether the processor was throttled or memory was nearly full at that moment.
  • A freeze that coincided with a slow drive is noted on that drive's finding too. Requests that were only slowed down by the freeze are not held against the drive.
  • Severity weighs how much of the PC a stall held. A stall on 1 of 32 processors no longer rates like the whole PC stopping; whole-PC freezes are always High.

More detail where it helps

  • The files that waited on disk say which programs waited on them.
  • The driver table says whether each driver's interrupts arrived message-signaled or on a shared line, and the device table shows each device's message-signaled interrupt limit where Windows has one set.
  • The comparison with your previous run keeps more numbers per finding and prints the three most telling. Data files from 0.7.0 and 0.8.0 still compare.
  • Long durations read as seconds ("84.7 s", not "84718 ms").
  • A changelog covering every release.

Fixes

  • At a flagged moment, the list of waiting programs showed the whole run's waits instead of that moment's.
  • A few report sentences had a long run of spaces in the middle.

Known limits

The new per-core, throttling and memory context lines, and a filter's own code in a slow request's path, have only been tested on synthetic data so far: they did not come up on the test PC. If a report looks wrong, please open an issue and attach it.

Verifying this download

gh attestation verify WTFIsStalling.exe --repo Tyberious/WTFIsStalling proves the file was built by this repository's release workflow from the tagged commit; sha256sum -c SHA256SUMS.txt checks the files. The executables are not code-signed yet, so SmartScreen may warn: More info -> Run anyway. If an antivirus blocks the download, please open an issue with the detection name.

Download

WTFIsStalling.exe is the app. wtfis-cli.exe is the same engine for the console.