Skip to content

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

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

[oscars-integration] Fix test262 test suite failures#5482
shruti2522 wants to merge 19 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.
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