gc-effects: checked-in tables don't describe auto-optimize archives (js_bun_gc stub throws, table says throws=no)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 12/100
Research direction
Start with bun_compat/mod.rs lines 27-28 and 61-62 to see how the stub is selected when bun-cli-utils is off, then read bun_compat/cli_utils_stub.rs where js_bun_gc calls feature_disabled and js_throw. Next, check eh.rs around lines 254-258 for how perry_eh_personality handles call sites without a landing pad, and find the checked-in gc_effects tables. The issue asks for the table to reflect the archives actually linked, so the work is design-heavy and should be confirmed with maintainers before any edit.
Written by the indexing model from the issue text.
Description
Without the bun-cli-utils feature (e.g. an auto-optimize runtime build), js_bun_gc links the stub in bun_compat/cli_utils_stub.rs (selected at bun_compat/mod.rs:27-28,61-62), which calls feature_disabled → js_throw. All three checked-in gc_effects tables classify it Reenters / throws=no (derived from the full --release build, whose implementation only collects).
Effect: codegen emits a plain call (no invoke) for it inside a try. perry_eh_personality unwinds past call sites without a landing pad (eh.rs:254-258), so the enclosing catch and finally are skipped and the error reaches an outer try or becomes uncaught. Severity is low: it needs Bun.gc() reachable in a build without bun-cli-utils.
The same measurement found 6 indirect call sites in auto-optimize archives that the release table classifies Leaf. The general fix is to compute the table from the archives actually linked (GC_EFFECTS_AT_BUILD design, slices 1 and 5). Evidence: slice-0 report, 2026-10-15.
- Dominant language
- Rust
- Stars
- 4.9k
- Forks
- 166
- Avg merge
- 3h 23m
- Merged PRs (30d)
- 911
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a 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 PerryTS/perry
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Maintainers usually reply within 1 day
-
bug
Difficulty 3/5 1-2 days Newbie friendliness 67/100
Maintainers usually reply within 1 day
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 48/100
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 76/100
Maintainers usually reply within 1 day
Similar issues
-
Make major, minor, and makedev safe on solarish targetsPossibly taken @xtqqczze claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Proxy ignores l5d-retry-http and l5d-retry-grpc conditions that follow a comma and spacePossibly taken @RaphaelFakhri claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
Maintainers usually reply within 3 days
-
sncast panics when decoding a `u384` valuePossibly taken @RaphaelFakhri claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
foundry-rs/starknet-foundry#4635 ·
Maintainers usually reply within 3 days
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
crmne/omastats#31 · 1 reaction ·
Maintainers usually reply within 1 day
-
area:desktop priority:p2 type:bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day