Skip to content

[oscars-integration] Fix test262 test suite failures - #5482

Draft
shruti2522 wants to merge 20 commits into
boa-dev:dev/oscars-gcfrom
shruti2522:fix-test262
Draft

[oscars-integration] Fix test262 test suite failures#5482
shruti2522 wants to merge 20 commits into
boa-dev:dev/oscars-gcfrom
shruti2522:fix-test262

Conversation

@shruti2522

Copy link
Copy Markdown
Contributor

follow up to #5480

@github-actions github-actions Bot added the Waiting On Review Waiting on reviews from the maintainers label Aug 18, 2026
@github-actions github-actions Bot added this to the v1.0.0 milestone Aug 18, 2026
@github-actions github-actions Bot added C-Dependencies Pull requests that update a dependency file C-Benchmark Issues and PRs related to the benchmark subsystem. C-CLI Issues and PRs related to the Boa command line interface. C-Tests Issues and PRs related to the tests. C-Builtins PRs and Issues related to builtins/intrinsics C-VM Issues and PRs related to the Boa Virtual Machine. C-Actions Pull requests that update Github Actions code C-GC Issue related to garbage collection C-Intl Changes related to the `Intl` implementation C-Runtime Issues and PRs related to Boa's runtime features labels Aug 18, 2026
@shruti2522
shruti2522 force-pushed the fix-test262 branch 2 times, most recently from 38d130c to 6f5662e Compare August 19, 2026 04:57
@shruti2522
shruti2522 force-pushed the fix-test262 branch 3 times, most recently from ad447ae to 7ee577c Compare August 20, 2026 04:31
@github-actions

Copy link
Copy Markdown

Test262 conformance changes

Test result main count PR count difference
Total 53,125 53,125 0
Passed 51,073 0 -51,073
Ignored 1,482 1,482 0
Failed 570 51,643 +51,073
Panics 0 51,643 +51,643
Conformance 96.14% 0.00% -96.14%
New panics (51643):
test/annexB/built-ins/Date/prototype/toGMTString/prop-desc.js (previously Passed)
test/annexB/built-ins/Date/prototype/toGMTString/not-a-constructor.js (previously Passed)
test/annexB/built-ins/Date/prototype/toGMTString/value.js (previously Passed)
test/annexB/built-ins/Date/prototype/getYear/name.js (previously Passed)
test/annexB/built-ins/Date/prototype/getYear/this-not-date.js (previously Passed)
test/annexB/built-ins/Date/prototype/getYear/not-a-constructor.js (previously Passed)
test/annexB/built-ins/Date/prototype/getYear/length.js (previously Passed)
test/annexB/built-ins/Date/prototype/getYear/nan.js (previously Passed)
test/annexB/built-ins/Date/prototype/getYear/B.2.4.js (previously Passed)
test/annexB/built-ins/Date/prototype/getYear/return-value.js (previously Passed)
test/annexB/built-ins/Date/prototype/setYear/year-number-relative.js (previously Passed)
test/annexB/built-ins/Date/prototype/setYear/name.js (previously Passed)
test/annexB/built-ins/Date/prototype/setYear/this-not-date.js (previously Passed)
test/annexB/built-ins/Date/prototype/setYear/date-value-read-before-tonumber-when-date-is-invalid.js (previously Passed)
test/annexB/built-ins/Date/prototype/setYear/not-a-constructor.js (previously Passed)
test/annexB/built-ins/Date/prototype/setYear/year-to-number-err.js (previously Passed)
test/annexB/built-ins/Date/prototype/setYear/length.js (previously Passed)
test/annexB/built-ins/Date/prototype/setYear/B.2.5.js (previously Passed)
test/annexB/built-ins/Date/prototype/setYear/year-number-absolute.js (previously Passed)
test/annexB/built-ins/Date/prototype/setYear/time-clip.js (previously Passed)
test/annexB/built-ins/Date/prototype/setYear/date-value-read-before-tonumber-when-date-is-valid.js (previously Passed)
test/annexB/built-ins/Date/prototype/setYear/year-nan.js (previously Passed)
test/annexB/built-ins/Date/prototype/setYear/this-time-valid.js (previously Passed)
test/annexB/built-ins/Date/prototype/setYear/this-time-nan.js (previously Passed)
test/annexB/built-ins/Object/is/emulates-undefined.js (previously Passed)
test/annexB/built-ins/RegExp/RegExp-leading-escape.js (previously Passed)
test/annexB/built-ins/RegExp/RegExp-trailing-escape-BMP.js (previously Passed)
test/annexB/built-ins/RegExp/RegExp-control-escape-russian-letter.js (previously Passed)
test/annexB/built-ins/RegExp/RegExp-decimal-escape-class-range.js (previously Passed)
test/annexB/built-ins/RegExp/RegExp-trailing-escape.js (previously Passed)
test/annexB/built-ins/RegExp/RegExp-invalid-control-escape-character-class-range.js (previously Passed)
test/annexB/built-ins/RegExp/incomplete_hex_unicode_escape.js (previously Passed)
test/annexB/built-ins/RegExp/RegExp-invalid-control-escape-character-class.js (previously Passed)
test/annexB/built-ins/RegExp/RegExp-decimal-escape-not-capturing.js (previously Passed)
test/annexB/built-ins/RegExp/RegExp-leading-escape-BMP.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/Symbol.split/toint32-limit-recompiles-source.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/Symbol.split/Symbol.match-getter-recompiles-source.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/this-not-object.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/pattern-regexp-props.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/B.RegExp.prototype.compile.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/flags-to-string.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/flags-undefined.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/pattern-regexp-flags-defined.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/pattern-regexp-immutable-lastindex.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/name.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/pattern-string-u.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/flags-string-invalid.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/pattern-regexp-distinct.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/length.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/flags-to-string-err.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/pattern-undefined.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/pattern-string-invalid.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/this-obj-not-regexp.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/pattern-string.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/pattern-to-string-err.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/pattern-regexp-same.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/compile/pattern-string-invalid-u.js (previously Passed)
test/annexB/built-ins/RegExp/prototype/flags/order-after-compile.js (previously Passed)
test/annexB/built-ins/RegExp/named-groups/non-unicode-malformed-lookbehind.js (previously Passed)
test/annexB/built-ins/RegExp/named-groups/non-unicode-malformed.js (previously Passed)
test/annexB/built-ins/String/prototype/search/custom-searcher-emulates-undefined.js (previously Failed)
test/annexB/built-ins/String/prototype/fontcolor/prop-desc.js (previously Passed)
test/annexB/built-ins/String/prototype/fontcolor/name.js (previously Passed)
test/annexB/built-ins/String/prototype/fontcolor/not-a-constructor.js (previously Passed)
test/annexB/built-ins/String/prototype/fontcolor/attr-tostring-err.js (previously Passed)
test/annexB/built-ins/String/prototype/fontcolor/length.js (previously Passed)
test/annexB/built-ins/String/prototype/fontcolor/B.2.3.7.js (previously Passed)
test/annexB/built-ins/String/prototype/fontcolor/this-val-tostring-err.js (previously Passed)
test/annexB/built-ins/String/prototype/fontsize/prop-desc.js (previously Passed)
test/annexB/built-ins/String/prototype/fontsize/B.2.3.8.js (previously Passed)
test/annexB/built-ins/String/prototype/fontsize/name.js (previously Passed)
test/annexB/built-ins/String/prototype/fontsize/not-a-constructor.js (previously Passed)
test/annexB/built-ins/String/prototype/fontsize/attr-tostring-err.js (previously Passed)
test/annexB/built-ins/String/prototype/fontsize/length.js (previously Passed)
test/annexB/built-ins/String/prototype/fontsize/this-val-tostring-err.js (previously Passed)
test/annexB/built-ins/String/prototype/split/custom-splitter-emulates-undefined.js (previously Failed)
test/annexB/built-ins/String/prototype/replace/custom-replacer-emulates-undefined.js (previously Failed)
test/annexB/built-ins/String/prototype/fixed/prop-desc.js (previously Passed)
test/annexB/built-ins/String/prototype/fixed/name.js (previously Passed)
test/annexB/built-ins/String/prototype/fixed/not-a-constructor.js (previously Passed)
test/annexB/built-ins/String/prototype/fixed/length.js (previously Passed)
test/annexB/built-ins/String/prototype/fixed/this-val-tostring-err.js (previously Passed)
test/annexB/built-ins/String/prototype/fixed/B.2.3.6.js (previously Passed)
test/annexB/built-ins/String/prototype/small/prop-desc.js (previously Passed)
test/annexB/built-ins/String/prototype/small/B.2.3.11.js (previously Passed)
test/annexB/built-ins/String/prototype/small/name.js (previously Passed)
test/annexB/built-ins/String/prototype/small/not-a-constructor.js (previously Passed)
test/annexB/built-ins/String/prototype/small/length.js (previously Passed)
test/annexB/built-ins/String/prototype/small/this-val-tostring-err.js (previously Passed)
test/annexB/built-ins/String/prototype/anchor/prop-desc.js (previously Passed)
test/annexB/built-ins/String/prototype/anchor/name.js (previously Passed)
test/annexB/built-ins/String/prototype/anchor/not-a-constructor.js (previously Passed)
test/annexB/built-ins/String/prototype/anchor/attr-tostring-err.js (previously Passed)
test/annexB/built-ins/String/prototype/anchor/length.js (previously Passed)
test/annexB/built-ins/String/prototype/anchor/B.2.3.2.js (previously Passed)
test/annexB/built-ins/String/prototype/anchor/this-val-tostring-err.js (previously Passed)
test/annexB/built-ins/String/prototype/italics/prop-desc.js (previously Passed)
test/annexB/built-ins/String/prototype/italics/name.js (previously Passed)
test/annexB/built-ins/String/prototype/italics/not-a-constructor.js (previously Passed)
test/annexB/built-ins/String/prototype/italics/length.js (previously Passed)
test/annexB/built-ins/String/prototype/italics/B.2.3.9.js (previously Passed)
test/annexB/built-ins/String/prototype/italics/this-val-tostring-err.js (previously Passed)
test/annexB/built-ins/String/prototype/sup/prop-desc.js (previously Passed)
test/annexB/built-ins/String/prototype/sup/name.js (previously Passed)
test/annexB/built-ins/String/prototype/sup/B.2.3.14.js (previously Passed)
test/annexB/built-ins/String/prototype/sup/not-a-constructor.js (previously Passed)
test/annexB/built-ins/String/prototype/sup/length.js (previously Passed)
test/annexB/built-ins/String/prototype/sup/this-val-tostring-err.js (previously Passed)
test/annexB/built-ins/String/prototype/trimRight/prop-desc.js (previously Passed)
test/annexB/built-ins/String/prototype/trimRight/name.js (previously Passed)
test/annexB/built-ins/String/prototype/trimRight/length.js (previously Passed)
test/annexB/built-ins/String/prototype/trimRight/reference-trimEnd.js (previously Passed)
test/annexB/built-ins/String/prototype/link/prop-desc.js (previously Passed)
test/annexB/built-ins/String/prototype/link/name.js (previously Passed)
test/annexB/built-ins/String/prototype/link/not-a-constructor.js (previously Passed)
test/annexB/built-ins/String/prototype/link/attr-tostring-err.js (previously Passed)
test/annexB/built-ins/String/prototype/link/length.js (previously Passed)
test/annexB/built-ins/String/prototype/link/this-val-tostring-err.js (previously Passed)
test/annexB/built-ins/String/prototype/link/B.2.3.10.js (previously Passed)
test/annexB/built-ins/String/prototype/blink/prop-desc.js (previously Passed)
test/annexB/built-ins/String/prototype/blink/B.2.3.4.js (previously Passed)
test/annexB/built-ins/String/prototype/blink/name.js (previously Passed)
test/annexB/built-ins/String/prototype/blink/not-a-constructor.js (previously Passed)
test/annexB/built-ins/String/prototype/blink/length.js (previously Passed)
test/annexB/built-ins/String/prototype/blink/this-val-tostring-err.js (previously Passed)
test/annexB/built-ins/String/prototype/trimLeft/prop-desc.js (previously Passed)
test/annexB/built-ins/String/prototype/trimLeft/name.js (previously Passed)
test/annexB/built-ins/String/prototype/trimLeft/length.js (previously Passed)
test/annexB/built-ins/String/prototype/trimLeft/reference-trimStart.js (previously Passed)
test/annexB/built-ins/String/prototype/matchAll/custom-matcher-emulates-undefined.js (previously Failed)
test/annexB/built-ins/String/prototype/strike/prop-desc.js (previously Passed)
test/annexB/built-ins/String/prototype/strike/B.2.3.12.js (previously Passed)
test/annexB/built-ins/String/prototype/strike/name.js (previously Passed)
test/annexB/built-ins/String/prototype/strike/not-a-constructor.js (previously Passed)
test/annexB/built-ins/String/prototype/strike/length.js (previously Passed)
test/annexB/built-ins/String/prototype/strike/this-val-tostring-err.js (previously Passed)
test/annexB/built-ins/String/prototype/bold/prop-desc.js (previously Passed)
test/annexB/built-ins/String/prototype/bold/name.js (previously Passed)
test/annexB/built-ins/String/prototype/bold/B.2.3.5.js (previously Passed)
test/annexB/built-ins/String/prototype/bold/not-a-constructor.js (previously Passed)
test/annexB/built-ins/String/prototype/bold/length.js (previously Passed)
test/annexB/built-ins/String/prototype/bold/this-val-tostring-err.js (previously Passed)
test/annexB/built-ins/String/prototype/sub/prop-desc.js (previously Passed)
test/annexB/built-ins/String/prototype/sub/name.js (previously Passed)
test/annexB/built-ins/String/prototype/sub/not-a-constructor.js (previously Passed)
test/annexB/built-ins/String/prototype/sub/B.2.3.13.js (previously Passed)
test/annexB/built-ins/String/prototype/sub/length.js (previously Passed)
test/annexB/built-ins/String/prototype/sub/this-val-tostring-err.js (previously Passed)
test/annexB/built-ins/String/prototype/match/custom-matcher-emulates-undefined.js (previously Failed)
test/annexB/built-ins/String/prototype/replaceAll/custom-replacer-emulates-undefined.js (previously Failed)
test/annexB/built-ins/String/prototype/substr/this-to-str-err.js (previously Passed)
test/annexB/built-ins/String/prototype/substr/length-undef.js (previously Passed)
test/annexB/built-ins/String/prototype/substr/length-falsey.js (previously Passed)
test/annexB/built-ins/String/prototype/substr/length-positive.js (previously Passed)
test/annexB/built-ins/String/prototype/substr/name.js (previously Passed)
test/annexB/built-ins/String/prototype/substr/start-to-int-err.js (previously Passed)
test/annexB/built-ins/String/prototype/substr/start-negative.js (previously Passed)
test/annexB/built-ins/String/prototype/substr/not-a-constructor.js (previously Passed)
test/annexB/built-ins/String/prototype/substr/length-to-int-err.js (previously Passed)
test/annexB/built-ins/String/prototype/substr/length.js (previously Passed)
test/annexB/built-ins/String/prototype/substr/this-non-obj-coerce.js (previously Passed)
test/annexB/built-ins/String/prototype/substr/start-and-length-as-numbers.js (previously Passed)
test/annexB/built-ins/String/prototype/substr/length-negative.js (previously Passed)
test/annexB/built-ins/String/prototype/substr/B.2.3.js (previously Passed)
test/annexB/built-ins/String/prototype/substr/surrogate-pairs.js (previously Passed)
test/annexB/built-ins/String/prototype/big/prop-desc.js (previously Passed)
test/annexB/built-ins/String/prototype/big/B.2.3.3.js (previously Passed)
test/annexB/built-ins/String/prototype/big/name.js (previously Passed)
test/annexB/built-ins/String/prototype/big/not-a-constructor.js (previously Passed)
test/annexB/built-ins/String/prototype/big/length.js (previously Passed)
test/annexB/built-ins/String/prototype/big/this-val-tostring-err.js (previously Passed)
test/annexB/built-ins/TypedArrayConstructors/from/iterator-method-emulates-undefined.js (previously Passed)
test/annexB/built-ins/Function/createdynfn-html-close-comment-body.js (previously Passed)
test/annexB/built-ins/Function/createdynfn-no-line-terminator-html-close-comment-body.js (previously Passed)
test/annexB/built-ins/Function/createdynfn-html-open-comment-params.js (previously Passed)
test/annexB/built-ins/Function/createdynfn-html-open-comment-body.js (previously Passed)
test/annexB/built-ins/Function/createdynfn-html-close-comment-params.js (previously Passed)
test/annexB/built-ins/Function/createdynfn-no-line-terminator-html-close-comment-params.js (previously Passed)
test/annexB/built-ins/Array/from/iterator-method-emulates-undefined.js (previously Passed)
test/annexB/built-ins/escape/escape-above.js (previously Passed)
test/annexB/built-ins/escape/prop-desc.js (previously Passed)
test/annexB/built-ins/escape/escape-below.js (previously Passed)
test/annexB/built-ins/escape/empty-string.js (previously Passed)
test/annexB/built-ins/escape/name.js (previously Passed)
test/annexB/built-ins/escape/to-string-observe.js (previously Passed)
test/annexB/built-ins/escape/to-primitive-err.js (previously Passed)
test/annexB/built-ins/escape/not-a-constructor.js (previously Passed)
test/annexB/built-ins/escape/argument_types.js (previously Passed)
test/annexB/built-ins/escape/argument_bigint.js (previously Passed)
test/annexB/built-ins/escape/length.js (previously Passed)
test/annexB/built-ins/escape/to-primitive-observe.js (previously Passed)
test/annexB/built-ins/escape/escape-above-astral.js (previously Passed)
test/annexB/built-ins/escape/to-string-err-symbol.js (previously Passed)
test/annexB/built-ins/escape/unmodified.js (previously Passed)
test/annexB/built-ins/escape/to-string-err.js (previously Passed)
test/annexB/built-ins/unescape/prop-desc.js (previously Passed)
test/annexB/built-ins/unescape/four.js (previously Passed)
test/annexB/built-ins/unescape/empty-string.js (previously Passed)
test/annexB/built-ins/unescape/name.js (previously Passed)
test/annexB/built-ins/unescape/to-string-observe.js (previously Passed)
test/annexB/built-ins/unescape/to-primitive-err.js (previously Passed)
test/annexB/built-ins/unescape/not-a-constructor.js (previously Passed)
test/annexB/built-ins/unescape/two-ignore-end-str.js (previously Passed)
test/annexB/built-ins/unescape/argument_types.js (previously Passed)
test/annexB/built-ins/unescape/four-ignore-end-str.js (previously Passed)
test/annexB/built-ins/unescape/four-ignore-bad-u.js (previously Passed)
test/annexB/built-ins/unescape/argument_bigint.js (previously Passed)
test/annexB/built-ins/unescape/length.js (previously Passed)
test/annexB/built-ins/unescape/two.js (previously Passed)
test/annexB/built-ins/unescape/two-ignore-non-hex.js (previously Passed)
test/annexB/built-ins/unescape/to-primitive-observe.js (previously Passed)
test/annexB/built-ins/unescape/four-ignore-non-hex.js (previously Passed)
test/annexB/built-ins/unescape/to-string-err-symbol.js (previously Passed)
test/annexB/built-ins/unescape/to-string-err.js (previously Passed)
test/annexB/language/comments/multi-line-html-close.js (previously Passed)
test/annexB/language/comments/single-line-html-close-first-line-3.js (previously Failed)
test/annexB/language/comments/single-line-html-close-asi.js (previously Passed)
test/annexB/language/comments/single-line-html-close-first-line-1.js (previously Failed)
test/annexB/language/comments/single-line-html-close-first-line-2.js (previously Failed)
test/annexB/language/comments/single-line-html-close-unicode-separators.js (previously Passed)
test/annexB/language/comments/single-line-html-close.js (previously Passed)
test/annexB/language/comments/single-line-html-open.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-case-eval-func-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-block-scoping.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-case-eval-func-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-block-decl-eval-func-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-case-eval-func-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-global-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-case-eval-func-no-skip-param.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-case-eval-func-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-block-scoping.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-block-scoping.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-global-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-block-scoping.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-case-eval-func-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-block-decl-eval-func-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-block-decl-eval-func-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-case-eval-func-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-block-decl-eval-func-no-skip-param.js (previously Passed)
test/annexB/language/eval-code/direct/func-block-decl-eval-func-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/direct/script-decl-lex-no-collision.js (previously Failed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-block-scoping.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-block-scoping.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-case-eval-func-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-block-decl-eval-func-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-global-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-no-skip-param.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-block-scoping.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-block-scoping.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-case-eval-func-block-scoping.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-block-decl-eval-func-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/block-decl-nostrict.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-case-eval-func-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/var-env-lower-lex-catch-non-strict.js (previously Failed)
test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/direct/switch-case-decl-nostrict.js (previously Passed)
test/annexB/language/eval-code/direct/func-block-decl-eval-func-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-case-eval-func-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-non-enumerable-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-block-decl-eval-func-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-case-eval-func-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-block-scoping.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-no-skip-param.js (previously Passed)
test/annexB/language/eval-code/direct/func-block-decl-eval-func-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-no-skip-param.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-case-eval-func-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-case-eval-func-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/switch-dflt-decl-nostrict.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/direct/func-block-decl-eval-func-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-block-decl-eval-func-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-global-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-global-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-global-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-block-scoping.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-block-scoping.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-no-skip-param.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-case-eval-func-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/direct/func-block-decl-eval-func-block-scoping.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-non-enumerable-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-case-eval-func-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-block-decl-eval-func-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-global-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-block-scoping.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-block-decl-eval-func-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/direct/func-block-decl-eval-func-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-no-skip-param.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-block-decl-eval-global-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-block-decl-eval-func-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-case-eval-func-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-global-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-no-skip-param.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/func-block-decl-eval-func-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-block-scoping.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-block-scoping.js (previously Passed)
test/annexB/language/eval-code/direct/func-switch-case-eval-func-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-init.js (previously Passed)
test/annexB/language/eval-code/direct/global-switch-case-eval-global-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-global-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-block-scoping.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-global-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/indirect/global-block-decl-eval-global-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-global-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/indirect/global-block-decl-eval-global-block-scoping.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-case-eval-global-block-scoping.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/indirect/global-block-decl-eval-global-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-global-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/indirect/global-block-decl-eval-global-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-block-scoping.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-global-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-block-decl-eval-global-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-global-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-block-decl-eval-global-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-block-fn-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-non-enumerable-global-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-skip-early-err-for-in.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-skip-early-err-try.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-block-scoping.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-global-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-var-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-block-decl-eval-global-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-fn-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-block-decl-eval-global-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-block-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-var-no-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-block-decl-eval-global-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-skip-early-err-for.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-skip-early-err-block.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-case-eval-global-skip-early-err.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-case-eval-global-no-skip-try.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-fn-no-init.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-skip-early-err-switch.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-case-eval-global-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-global-update.js (previously Passed)
test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-skip-early-err-for-of.js (previously Passed)
test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-global-...*[Comment body truncated]*

@github-actions github-actions Bot added C-WebAssembly Anything related to using Boa with Wasm C-FFI Foreign Function Interface, to be able to use Boa from a different language, such as C labels Aug 20, 2026
@shruti2522
shruti2522 force-pushed the fix-test262 branch 3 times, most recently from efb22a5 to 0efd528 Compare August 23, 2026 07:34
Both functions held a Ref<'_, T> GC borrow guard across calls to
context.gc_collector() and create_data_property_or_throw(context),
which can trigger a GC collection cycle, freeing the backing object
while the borrow guard is still live (use-after-free -> heap corruption
-> malloc_consolidate abort).

Fix pattern (same as ListFormat::resolved_options):
- Extract all needed fields into owned values inside a scoped block
- Drop the Ref<'_, T> at end of the block
- All context/GC operations follow the block with no borrow live

Collator::resolved_options: locale_str, usage, sensitivity,
  ignore_punctuation, collation, numeric, case_first are copied out
  before any context operations.

format_to_parts: native formatting (lf.native.format()) moved into a
  scoped block so the Ref drops before the Array creation loop that
  repeatedly calls context.gc_collector() and create_data_property_or_throw.
This fixes the same Use-After-Free (UAF) bug pattern found in
ListFormat and Collator across the remaining Intl built-ins:
- PluralRules
- DateTimeFormat
- NumberFormat
- Segmenter

The bug occurs when a `Ref<'_, T>` (via `downcast_ref`) is held
across a call to `ObjectInitializer::new(context)` or `options.property(..., context)`,
which can trigger a garbage collection cycle and free the underlying object.

The fix extracts all required fields into scoped variables before
interacting with the context.
This fixes additional heap use-after-free bugs in the Intl builtins where
methods like `PluralRules.prototype.select`, `Segments.prototype.containing`,
and `SegmentIterator.prototype.next` held GC borrow guards (`Ref<'_, T>` or
`RefMut<'_, T>` via `downcast_ref`) across calls to the `Context` (like
`to_number`, `to_integer_or_infinity`, or `create_segment_data_object`)
which can trigger a garbage collection cycle and invalidate the pointer.

Because tests are run in parallel by `boa_tester`, these UAFs were randomly
corrupting the heap allocator state, causing tests in entirely unrelated
modules (e.g. `ListFormat.prototype.format`) to crash with
`malloc_consolidate(): unaligned fastbin chunk detected`.

The fix avoids holding borrow guards across GC-triggering context
interactions by extracting the data first.
The previous change introduced a type mismatch: inside the scoped
block that extracts state from the GC-managed SegmentIterator,
a  tried to return a tuple
from a function whose return type is JsResult<JsValue>. The compiler
caught this as an E0308 type mismatch.

Replaced the artificial 'finished' boolean flag in a tuple with a clean
Option<(JsString, usize, usize, Option<bool>)> and a match statement,
which correctly expresses exhaustion vs. a live segment without any
type tricks.
This commit does two things:

1. Root cause fix: RegExpStringIterator::next and ArrayIterator::next both
   held RefMut<'_, T> borrow guards (via downcast_mut) across multiple
   context calls (RegExpExec, to_string, get, to_length, set,
   length_of_array_like, Array::get). Any of these can trigger a GC
   collection that frees the backing object while the mutable guard is
   live, causing a use-after-free.

   Fix: extract all needed fields into owned values in a scoped block,
   drop the borrow guard, then do all context operations. Re-borrow only
   to write back state changes (completed, done, next_index).

2. CI fix: add --disable-parallelism to the test262 runner command.

   The cascading 'malloc_consolidate(): unaligned fastbin chunk detected'
   crashes in innocent suites (anchor, fontsize) happen because rayon
   runs test suites in parallel in the same process. A UAF in one thread
   silently corrupts the shared glibc heap; when another thread then
   allocates, the allocator detects the corruption and aborts the entire
   process. This makes the symptom appear in a random innocent suite.

   Serial execution ensures each crash is attributed to the actual
   offending test, not a random concurrent victim. This is the
   standard approach while UAF fixes are in progress.
Similar to RegExpStringIterator and ArrayIterator, these iterators and
generators were holding a RefMut borrow (via downcast_mut) across
context calls (create_iter_result_object, String::substring) which
trigger GC operations.

Fix by dropping the borrow before any context calls are made.
ForInIterator::next was holding a RefMut borrow across multiple
context-triggering calls (__own_property_keys__, __get_own_property__,
create_iter_result_object). Restructured to narrow borrow scope.

AsyncGeneratorYield opcode was holding a borrow_mut guard while calling
err.into_opaque(context) inside the Throw branch. Replaced with a
scoped borrow that clones the queue front before dropping the guard.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

C-Actions Pull requests that update Github Actions code C-Benchmark Issues and PRs related to the benchmark subsystem. C-Builtins PRs and Issues related to builtins/intrinsics C-CLI Issues and PRs related to the Boa command line interface. C-Dependencies Pull requests that update a dependency file C-FFI Foreign Function Interface, to be able to use Boa from a different language, such as C C-GC Issue related to garbage collection C-Intl Changes related to the `Intl` implementation C-Runtime Issues and PRs related to Boa's runtime features C-Tests Issues and PRs related to the tests. C-VM Issues and PRs related to the Boa Virtual Machine. C-WebAssembly Anything related to using Boa with Wasm Waiting On Review Waiting on reviews from the maintainers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant