Skip to content

console: guard AggregateError .errors recursion (cycle, depth, tampered property) - #35825

Closed
robobun wants to merge 11 commits into
mainfrom
farm/6e616f86/aggregate-error-cycle-guard
Closed

console: guard AggregateError .errors recursion (cycle, depth, tampered property)#35825
robobun wants to merge 11 commits into
mainfrom
farm/6e616f86/aggregate-error-cycle-guard

console: let the header-print RangeError propagate instead of enterin…

747b909
Select commit
Loading
Failed to load commit list.
Claude / Claude Code Review completed Jul 26, 2026 in 36m 40s

Code review found 1 potential issue

Found 1 candidates, confirmed 1. See review comments for details.

Details

Severity Count
🔴 Important 0
🟡 Nit 1
🟣 Pre-existing 0
Severity File:Line Issue
🟡 Nit src/jsc/VirtualMachine.rs:4883 Sticky formatter.failed gate suppresses sibling AggregateError .errors on non-throwing sinks

Annotations

Check warning on line 4883 in src/jsc/VirtualMachine.rs

See this annotation in the file changed.

@claude claude / Claude Code Review

Sticky formatter.failed gate suppresses sibling AggregateError .errors on non-throwing sinks

On the `can_throw_stack_overflow=false` sinks (uncaught-throw / unhandled-reject — `Formatter::new()` at VirtualMachine.rs:4471 and jsc_hooks.rs:1196), `formatter.failed` is set at L5574 without an exception and never reset, so once one deep `.errors` branch trips the stack guard, this `!formatter.failed` gate silently skips the `.errors` iteration for every *following sibling* aggregate even though the stack has fully unwound. Since on the `can_throw=true` path the RangeError is already covered