Windows desktop: Worker OOM after sustained background Git diff activity
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
No raw logs, dumps, conversation content, account identifiers, user paths, repository name, remote URL, or commit hashes are included in this report.
Environment
- Windows desktop application package version: 26.901.6511.0.
- System physical memory: approximately 64 GiB.
- Local Git repository with 52,899 tracked path entries.
- Multiple application windows/processes were present. The number of actively running agent tasks was not verified.
Observed failure
At 2026-09-08 20:55:55.583 UTC (2026-09-09 04:55:55.583 UTC+8), the desktop main-process log recorded ERR_WORKER_OUT_OF_MEMORY, with message Worker terminated due to reaching memory limit: JS heap out of memory.
Two milliseconds later the worker manager recorded worker exit code 1. Node internal error frames were node:internal/worker:398:26 and node:internal/worker:295:20.
The desktop main process retained the same PID and start time, and continued logging afterward. This event was a Worker failure, not an observed whole-app exit.
Memory evidence
Main-process private bytes, converted to MiB:
| Time UTC | Private memory MiB |
|---|---|
| 17:30:14 | 971.0 |
| 18:30:08 | 1809.9 |
| 19:30:21 | 2949.0 |
| 20:30:12 | 4054.3 |
| 20:55:48 | 4559.2 |
| 20:56:12 | 474.0 |
| 20:56:56 | 406.4 |
About 4085 MiB of main-process private memory was released across the Worker failure. Immediately before it, approximately 16036 MiB of system physical memory was still available. Process private memory is not a direct measurement of the individual Worker's JS heap or its exact limit.
Git correlation
The earlier worker-thread log stopped at 20:55:50.140 UTC, about 5.4 seconds before the OOM. During the 20:00 UTC hour it contained 458 Git log events, of which 448 included canceled. These are log event counts, not a full request census.
Immediately preceding operations repeatedly ran a diff against the same baseline commit, with rename detection and raw/numstat output. Repository identity and commit hash are omitted here.
A new worker-thread log began recording Git activity at 20:58:38.278 UTC. This strongly suggests the Git worker was involved and subsequently recreated, but the Worker error line did not identify workerId directly. The allocating object, retention chain, and the role of cancellation remain unproven.
Reproduction status and requested investigation
This occurred naturally during a long desktop session with a large, changing repository. There is no isolated deterministic reproducer yet. Do not treat the repository size or canceled requests alone as proof of the cause.
Please investigate Git worker query/cache retention, repeated review refresh and cancellation lifetimes. Including workerId and worker heap/GC measurements in the relevant failure diagnostics would help establish the allocating subsystem and distinguish workload peaks from retained data.
The desired behavior is bounded memory during sustained repository activity, and safe resource release when queries are replaced, canceled, or no longer observed.
Mitigation attempted
The proposed Disable Git-Based Review setting was not available in the user's settings UI. The setting was not changed, and no installed application code was patched. Native main-process triage was armed, but no dump was expected for this specific event because the main process survived.
There was a separate earlier whole-app crash; no causal link to this Worker OOM has been established. Evidence for that separate incident is intentionally excluded from this report.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No source files or tests are named. Start by locating the Git worker manager and the code handling repeated diff or review refresh cancellation; add the requested worker diagnostics and exercise sustained activity with a large changing repository. Done means identifying the relevant allocation or retention behavior and verifying bounded memory with safe release after replacement or cancellation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- git, node.js, rust
- Domain
- desktop, devtools, performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100