Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

🤖 tests: loop-test runner signal edge cases (deferred from #7208)

Open
#7,299 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
1-2 days
Newbie friendliness
48/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
bun, typescript
Domain
cli, testing

Research direction

Start with scripts/perf/loopTestBaseline.ts and trace how signal handling interacts with measure, runPool, and stopChildren(). The issue reports two deferred edge cases but says the first race was not reproduced and the second is intentionally left as is. Pick up only if a stopped run leaves a record, scratch directory, or worktree behind; done means reproducing that leftover and fixing it without disrupting cleanup.

Written by the indexing model from the issue text.

Description

Two edge cases in the loop-test runner's signal handling (scripts/perf/loopTestBaseline.ts). The advisor of the #7208 fix stack (#7264, #7265) raised them. Both are deferred from #7208 with the reasons below.

  1. With --runs 1, a signal during the last run lets measure resolve, so main can write a record that holds the killed run. I tried assert(!stopping) after runPool plus a fixture test. The test also passed without the fix: in Bun 1.4.3 the signal handler reaches process.exit before main writes. I could not show the race, so I did not ship the fix.
  2. A second SIGINT or SIGTERM while stopChildren() waits uses the default handler (process.once). It kills the runner and leaves the children, the scratch dir and the base worktree behind. A user who signals twice asks for an immediate stop, so this stays as is unless it causes trouble.

Owner: the phase 1 builder. Trigger: a leftover record, scratch dir or worktree after a stopped run.

Refs #7208, #7255


Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high • Cost: $62.13

Dominant language
TypeScript
Stars
2.1k
Forks
140
Avg merge
4h 57m
Merged PRs (30d)
946

Getting set up

  • Ships a Dockerfile or Docker Compose file
  • No pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from coder/xum

All issues in coder/xum

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.