You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
SIGSEGV after several frozen for-of-head rejections, then a for-of head on an UNfrozen object #9460
A .cts that runs several for (o.x of …) cases against frozen objects and then the same shape against an unfrozen object segfaults.
It does not reproduce in isolation — the preceding throwing cases are required — which points at state corruption on the throw path rather than a fault in the final statement.
Repro kept at scratchpad/repro/r_lanes.cts from the #9422/#9423 investigation.
Likely connection
The throwing path here is the over-throw described in the companion issue: for (o.x of …) on a frozen object raises a TypeError that node does not raise, via js_typed_feedback_object_set_field_by_name on the Expr::PropertySet lane, which has no strictness field. So these are throws that should not be happening at all, and the crash is what happens after several of them.
Two candidate mechanisms, both worth checking before assuming:
PERRY_GC_PROTECT_FROMSPACE=1 distinguishes them quickly: if it faults on a retired address, it is (2).
Note the companion fix may make this unreproducible without fixing it — if for (o.x of …) stops throwing in sloppy code, the sequence that triggers the crash disappears. That would hide a real defect rather than fix it, so this needs a repro that throws legitimately (the same shapes under "use strict", where the TypeError is correct) before the over-throw is fixed.
Activity
fix(codegen): PropertySet rejections honour sloppy mode (#9459); a wr…
fix(codegen): the sloppy tail stops excluding `caller`/`arguments` (P…
fix(codegen): an inherited property read no longer folds to undefined…
fix(#10822): delete on a scalar-replaced receiver escapes it