Urgent.News

What's breaking now, across thousands of outlets.

Tech

My editor's background linter filled the one drive I had left, 341GB at a time

My editor's background linter filled the one drive I had left, 341GB at a time The number I want to start with: 0.82GB free on C:. Measured 2026-09-01, on a machine whose only system drive is a single NVMe partition, after weeks of a Rust project growing in the background. Below a gigabyte, Windows starts refusing things quietly, and figuring out why took longer than fixing it once we knew. The…

My editor's background linter filled the one drive I had left, 341GB at a time. The number I want to start with is 0.82GB free on C:. Measured on September 1, 2026, on a machine with a single NVMe partition system drive, after weeks of a Rust project growing in the background.

With only a gigabyte remaining, Windows began refusing operations quietly. Determining the cause took longer than fixing it once identified. The project had a rule: cargo only runs inside WSL, separate from Windows-native or PowerShell terminals. This rule was adhered to by all builders and testers.

What wasn't covered by the rule was the editor. VS Code's Rust extension uses rust-analyzer, which conducts its own background cargo check on every save, independent of human activity in the terminal. Using its own knowledge of the project's build directory, rust-analyzer writes to a Windows-native target\debug folder, unaware of the WSL rule.

Seventeen processes running simultaneously, mid-write, revealed the source of the bleed. The built folder measured 341GB, confirmed as regenerable cargo output by the presence of a CACHEDIR.TAG file, marking it safe for deletion and rebuild. The rule didn't bind the breaking factor, as rust-analyzer's flycheck feature, a separate writer, ignored it.

To stop the bleed, two actions were needed: killing the seventeen active processes and disabling three VS Code settings allowing rust-analyzer's flycheck to interact with the native build directory. The 341GB was only one of three sources, not the entire story. WSL had 630GB of stale cargo target/ directories from uncleaned sessions. The WSL virtual disk, the Linux filesystem container, also didn't shrink after deletion, a distinct fact requiring its own article.

In total, cleanup and compaction recovered nearly 1TB, reducing the container from 845.4GB to 173.4GB, a 672GB decrease measured directly before and after. The most significant change I made was recognizing that writing a resource discipline down, such as "cargo builds happen in WSL," required considering what else could write to the same resource that hadn't been named.

An editor extension, scheduled task, or second person's session sharing the same checkout could also write to the resource, and rules that name one writer and stop there are already losing against every writer they didn't account for, which this one had been doing quietly for an unknown duration before the free space hit zero.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Deleting files inside WSL doesn't shrink the disk they lived on

Deleting files inside WSL doesn't shrink the disk they lived on WSL2 keeps its entire Linux filesystem inside one file on the Windows side, a virtual hard disk with a .vhdx extension.

  • Files inside WSL do not shrink disk automatically.
  • Use fstrim, wsl --shutdown, and Optimize-VHD to manually reduce size.
  • Cleanup reduces size by 672GB in example scenario.

A double-quoted $HOME sent three of my directories nowhere I could find them

A double-quoted $HOME sent three of my directories nowhere I could find them I was calling into WSL from a PowerShell script, the way I do a dozen times a day: build a command string, hand it to wsl…

  • PowerShell script inadvertently sent directories nowhere
  • Double-quoted $HOME expanded prematurely
  • Single quotes solution created directories correctly

git commit -m with a path argument doesn't commit what you staged

git commit -m "msg" -- doesn't commit what you staged I'd staged a handful of files, run a narrow git commit -m "fix: ..." -- path/to/file.rs , and assumed the diff that landed matched what I'd git…

  • git commit -m with path argument commits only current working-tree content
  • Overrides staged changes, disregarding files added with git add --cached
  • Verifying committed changes with git diff recommended in shared environments

A red gate and a silent one turned out to mean the same thing

A red gate and a silent one turned out to mean the same thing I wrote up an incident here a couple of days ago: CI on a Rust project I maintain showed red for weeks, and not one of those jobs had ever…

  • Red gate and silent gate indicated same error in CI process
  • Two incidents of scheduler refusing jobs and log missing
  • Introduced "untestable" category to avoid miscounting

The discriminator between a membrane and a logger

The discriminator between a membrane and a logger The first version of this test passed for the wrong reason, and it took me a while to notice.

  • OpenClaw's native tool writes bytes before gx can commit inverse, causing simultaneous writes
  • Added line of code allows OpenClaw's tool to check file snapshot before writing, separating writers

More from Thursday 3 September →