From 55eb4d18df8126f5de445357852cd31f337f027b Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Sat, 14 Nov 2026 11:10:10 -0800 Subject: [PATCH 1/2] chore(quest): claim quest/m1/bun-efault.md Quest-Claim: f19caad462a73bd3 From 1ff060f4eaede96ea0d10dbcd5970c39af497d79 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Sat, 14 Nov 2026 11:14:00 -0800 Subject: [PATCH 2/2] docs(quest): record the Bun EFAULT report and the fix to wait for Co-Authored-By: Claude Sonnet 5.5 --- quest/m1/bun-efault.md | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/quest/m1/bun-efault.md b/quest/m1/bun-efault.md index 144ee58a..c9c133e9 100644 --- a/quest/m1/bun-efault.md +++ b/quest/m1/bun-efault.md @@ -2,31 +2,35 @@ ## Goal -oven-sh/bun has a report for `rmSync(file, { force: true })` throwing -`EFAULT` on Windows when two processes remove the same file at once. Node -throws `EPERM` there. Once a Bun release fixes it and Quest's pin includes -that release, `remove()` in `src/cli/gate.ts` stops tolerating `EFAULT`, and -this quest is deleted. +Bun no longer throws `EFAULT` from `rmSync(file, { force: true })` on Windows +when two processes remove the same file at once (Node throws `EPERM`). Once a +Bun release fixes it and Quest's pin includes that release, `remove()` in +`src/cli/gate.ts` stops tolerating `EFAULT`, and this quest is deleted. ## Plan -Decided 2026-10-28 (user, /quest-plan of the follow-ups from a 25-PR /quest-complete run). Posting the report to oven-sh/bun is approved. - - [moq-dev/quest#233](https://github.com/moq-dev/quest/pull/233) found the race and worked around it. Its diagnostic runs have the minimal repro: two processes `rmSync` the same file on `windows-11-arm` and `windows-2022`. -- Search existing Bun issues first, and comment on a match instead of opening - a duplicate. As of 2026-11-02 nobody from moq-dev has commented or opened - one. The closest reports are - [oven-sh/bun#39708](https://github.com/oven-sh/bun/issues/39708), the - recursive case, with its fix - [oven-sh/bun#39710](https://github.com/oven-sh/bun/pull/39710), and the - single-file fix - [oven-sh/bun#38550](https://github.com/oven-sh/bun/pull/38550); all three - are open. +- Reported upstream on 2026-11-14 (approved by the user, 2026-10-28) as a + [comment with the Windows repro and counts](https://github.com/oven-sh/bun/issues/48811#issuecomment-6882793150) + on [oven-sh/bun#48811](https://github.com/oven-sh/bun/issues/48811), the + report filed 2026-11-13 that matches this exactly but had no Windows run. +- The fix to wait for is + [oven-sh/bun#48816](https://github.com/oven-sh/bun/pull/48816), open: it makes + non-recursive `rm` report the errno `unlink` returned, so the losing caller + gets `EPERM` as in Node. `remove()` already tolerates `EPERM`, so only the + `EFAULT` entry goes. +- The recursive case is + [oven-sh/bun#39708](https://github.com/oven-sh/bun/issues/39708) with its fix + [oven-sh/bun#39710](https://github.com/oven-sh/bun/pull/39710), both open. + [oven-sh/bun#38550](https://github.com/oven-sh/bun/pull/38550), the earlier + single-file fix, closed unmerged on 2026-11-13. ## Waiting -- oven-sh/bun: a release fixes `rmSync` throwing `EFAULT` when two processes - remove one file on Windows, and Quest's pin includes it. Check the report - and the fix PRs above each time ready work is triaged. +- oven-sh/bun: a release carries a fix for + [oven-sh/bun#48811](https://github.com/oven-sh/bun/issues/48811) (likely + [oven-sh/bun#48816](https://github.com/oven-sh/bun/pull/48816)), and Quest's + pin includes it. Check the issue and the fix PR each time ready work is + triaged.