Closed Bug 1931494 Opened 11 months ago Closed 11 months ago

Assertion failure: cx->isExceptionPending() || cx->isPropagatingForcedReturn() || cx->hadUncatchableException(), at vm/Interpreter.cpp:440

Categories

(Core :: JavaScript Engine, defect)

All
Linux
defect

Tracking

()

RESOLVED FIXED
134 Branch
Tracking Status
firefox-esr128 --- unaffected
firefox132 --- unaffected
firefox133 --- wontfix
firefox134 --- fixed

People

(Reporter: gkw, Assigned: jandem)

References

(Blocks 1 open bug, Regression)

Details

(Keywords: regression, reporter-external, testcase)

Attachments

(2 files)

Attached file debug stack
let m = {};
function f(x, y, z) {
  if (Object.hasOwn(m, y)) {
    p = m[y];
  } else if (typeof x !== "undefined") {
    r = "addMarkObservers";
    if (i === 3) r = "print";
    p = (function () {
      return new (function () {
        this.s = [{ t: { undefined } }, { u: { r } }, { v: { undefined } }];
      })();
    })();
  } else {
    p = new (function () {
      this.s = [];
    })();
  }
  Object.defineProperty(m, y, { value: p });
  n = [];
  (function (q) {
    for (i = 0; i < p.s.length; i++) {
      if (Object.hasOwn(p.s[i], "v")) {
        n.push(q[3]);
      } else if (Object.hasOwn(p.s[i], "t")) {
        n.push(this);
      } else if (
        (function () {
          return { u: { r } };
        })()
      )
        n.push(p.s[i].u.r);
    }
  })(z);
  (function () {
    try {
      n[0][n[1]](...n.slice(2, n.length));
    } catch (e) {}
  })();
}
f();
function g() {
  f(this, "", [this, Uint8Array, , [[]], 0]);
  f(this, "1", this);
}
g();
oomTest(g);
(gdb) bt
#0  AssertExceptionResult (cx=cx@entry=0x7ffff6f36200) at /home/i32g7900a/trees/mozilla-central/js/src/vm/Interpreter.cpp:439
#1  0x000055555727aa7f in CallJSNative (cx=cx@entry=0x7ffff6f36200, native=<optimized out>, reason=reason@entry=js::CallReason::Call, args=...) at /home/i32g7900a/trees/mozilla-central/js/src/vm/Interpreter.cpp:537
#2  0x0000555557251032 in js::InternalCallOrConstruct (cx=0x7ffff6f36200, args=..., construct=construct@entry=js::NO_CONSTRUCT, reason=js::CallReason::Call) at /home/i32g7900a/trees/mozilla-central/js/src/vm/Interpreter.cpp:628
#3  0x0000555557251d68 in InternalCall (cx=<optimized out>, args=..., reason=1490543312, reason@entry=js::CallReason::Call) at /home/i32g7900a/trees/mozilla-central/js/src/vm/Interpreter.cpp:695
#4  0x0000555557251f59 in js::Call (cx=cx@entry=0x7ffff6f36200, fval=fval@entry=..., thisv=thisv@entry=..., args=..., rval=..., reason=reason@entry=js::CallReason::Call) at /home/i32g7900a/trees/mozilla-central/js/src/vm/Interpreter.cpp:727
#5  0x0000555557fb1306 in js::jit::InvokeFunction (cx=0x7ffff6f36200, obj=..., constructing=<optimized out>, ignoresReturnValue=true, argc=1, argv=0x7fffffffbdb0, rval=...) at /home/i32g7900a/trees/mozilla-central/js/src/jit/VMFunctions.cpp:548
/snip

I'm going to guess that this is related to bug 1921780 again.

Run with --fuzzing-safe --no-threads --ion-eager, compile with AR=ar sh ../configure --enable-debug --enable-debug-symbols --with-ccache --enable-nspr-build --enable-ctypes --enable-gczeal --enable-rust-simd --disable-tests, tested on m-c rev 0191fbfc9115.

Setting s-s just in case. Jan, did bug 1921780 likely expose the issue?

Flags: sec-bounty?
Flags: needinfo?(jdemooij)

Set release status flags based on info from the regressing bug 1921780

Group: core-security → javascript-core-security

I'm going to guess that the testcase in comment 0 involves addMarkObservers.

oomTest(function () { addMarkObservers([[]]); });

Here's another testcase that reproduces on m-c rev 6c508a387477, also involves addMarkObservers, same assert, different flags: --fuzzing-safe --no-threads --no-baseline --no-ion

Jan, do you think they are related?

Yes these are the same (probably quite old) bug. A missing ReportOutOfMemory call for addMarkObservers.

Assignee: nobody → jdemooij
Group: javascript-core-security
Status: NEW → ASSIGNED
Flags: needinfo?(jdemooij)
Pushed by jdemooij@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/45b9d50e2ae6 Add missing ReportOutOfMemory call for addMarkObservers shell function. r=jonco
Status: ASSIGNED → RESOLVED
Closed: 11 months ago
Resolution: --- → FIXED
Target Milestone: --- → 134 Branch
Flags: sec-bounty? → sec-bounty-
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: