Unbounded waits: revokeProjectGrant has no timeout, and timed-out browser waiters are never removed
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 72/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript
- Domain
- desktop
Research direction
Read src/main/tools/sandbox_windows.ts:251-275 and src/main/panels/browser.ts:115-123, then inspect the existing child-process timeout and waiter timer patterns nearby. Add the 15-second revoke timeout and remove the browser waiter when its 5-second timer fires. Done when a hung revoke settles with an error and a timed-out waiter is no longer retained or resolved by a later attach.
Written by the indexing model from the issue text.
Description
Found in the 2026-10-07 code review (read).
Problem
- Revoke:
revokeProjectGrant(src/main/tools/sandbox_windows.ts:251-275) spawns a helper with no timeout. If it hangs (for example on the permission mutex), the promise never settles. ThereleaseProjectGrantretry loop stalls, the process and its pipes leak, and the "kept its sandbox grant" warning is never logged. - Browser waiters:
BrowserService.waitForGuest(src/main/panels/browser.ts:115-123) leaves a waiter inthis.waitersafter its 5 s rejection. That leaks a closure per failed wait, and a later attach resolves an already-rejected promise.
Fix
- Add a 15 s timer to
revokeProjectGrantthat kills the child and resolves with an error. - Remove the waiter from the array when its timer fires.
- Dominant language
- TypeScript
- Stars
- 2
- Forks
- 2
- Avg merge
- 8h 28m
- Merged PRs (30d)
- 26
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing 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.
More from PierrunoYT/patch
-
enhancement priority: low severity: low
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
PierrunoYT/patch#305 ·
Maintainers usually reply within 1 day
-
security: isAppPageUrl checks devRendererUrl with startsWith instead of comparing parsed URL originsOpenpriority: low security severity: low
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
PierrunoYT/patch#300 ·
Maintainers usually reply within 1 day
-
Claude Code chats: tool calls made inside Claude Code subagents leave cards that end as "(stopped)"Openbug priority: low severity: low
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
PierrunoYT/patch#289 ·
Maintainers usually reply within 1 day
-
bug priority: medium severity: low
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
PierrunoYT/patch#285 ·
Maintainers usually reply within 1 day
-
priority: medium security severity: low
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
PierrunoYT/patch#283 ·
Maintainers usually reply within 1 day
All issues in PierrunoYT/patch
Similar issues
-
streams:add
Difficulty 2/5 Under an hour Newbie friendliness 70/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
apache/rocketmq-dashboard#6872 ·
Maintainers usually reply within 3 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
interledger/publisher-tools#931 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
ARTPARK-SAHAI-ORG/calibrate-frontend#727 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
fab-geocommuns/RNB-site#539 ·
Maintainers usually reply within 2 days