Closed Bug 1382434 Opened 7 years ago Closed 6 years ago

Assertion failure: result.unwrapErr() == AbortReason::Error, at js/src/jit/IonBuilder.cpp:3795 with OOM

Categories

(Core :: JavaScript Engine, defect, P3)

ARM
Linux
defect

Tracking

()

RESOLVED DUPLICATE of bug 1416794
Tracking Status
firefox56 --- affected

People

(Reporter: decoder, Unassigned)

References

(Blocks 1 open bug)

Details

(4 keywords, Whiteboard: [jsbugmon:update,ignore])

The following testcase crashes on mozilla-central revision 1b065ffd8a53 (build with --enable-posix-nspr-emulation --enable-valgrind --enable-gczeal --disable-tests --enable-stdcxx-compat --disable-profiling --enable-debug --without-intl-api --enable-optimize --target=i686-pc-linux-gnu --enable-simulator=arm, run with --fuzzing-safe --ion-eager --ion-offthread-compile=off): function f(arr) {} function test(out) f(arr); var obj = {}; try { test(obj); } catch (lfVare) {} loadFile(` function f() { this.e = function() {}; expect.defineProperty(this, test(() => Number.prototype.i.call(-Infinity, 555), i), {} ); } new f(); `); function loadFile(lfVarx) { try { oomTest(new Function(lfVarx)); } catch (lfVare) {} } Backtrace: received signal SIGSEGV, Segmentation fault. 0x08308f8e in js::jit::IonBuilder::inlineScriptedCall (this=0xffffa224, callInfo=..., target=0xf5382c20) at js/src/jit/IonBuilder.cpp:3795 #0 0x08308f8e in js::jit::IonBuilder::inlineScriptedCall (this=0xffffa224, callInfo=..., target=0xf5382c20) at js/src/jit/IonBuilder.cpp:3795 #1 0x083090c4 in js::jit::IonBuilder::inlineSingleCall (this=0xffffa224, callInfo=..., targetArg=0xf5382c20) at js/src/jit/IonBuilder.cpp:4319 #2 0x0830a875 in js::jit::IonBuilder::inlineCallsite (this=0xffffa224, targets=..., callInfo=...) at js/src/jit/IonBuilder.cpp:4373 #3 0x0830abed in js::jit::IonBuilder::jsop_call (this=0xffffa224, argc=2, constructing=false, ignoresReturnValue=false) at js/src/jit/IonBuilder.cpp:5375 #4 0x083100f6 in js::jit::IonBuilder::inspectOpcode (this=0xffffa224, op=JSOP_CALL) at js/src/jit/IonBuilder.cpp:2041 #5 0x0831133c in js::jit::IonBuilder::visitBlock (this=0xffffa224, cfgblock=0xf798f29c, mblock=0xf79b82e0) at js/src/jit/IonBuilder.cpp:1539 #6 0x08306ff1 in js::jit::IonBuilder::traverseBytecode (this=0xffffa224) at js/src/jit/IonBuilder.cpp:1456 #7 0x08307c54 in js::jit::IonBuilder::build (this=0xffffa224) at js/src/jit/IonBuilder.cpp:846 #8 0x083159da in js::jit::AnalyzeNewScriptDefiniteProperties (cx=0xf791d000, fun=..., group=0xf536a538, baseobj=..., initializerList=0xffffa568) at js/src/jit/IonAnalysis.cpp:4230 #9 0x088655b2 in js::TypeNewScript::maybeAnalyze (this=0xf519cca0, cx=0xf791d000, group=0xf536a538, regenerate=0x0, force=true) at js/src/vm/TypeInference.cpp:3861 #10 0x08074410 in js::jit::IonCompile (cx=cx@entry=0xf791d000, script=<optimized out>, baselineFrame=baselineFrame@entry=0x0, osrPc=0x0, recompile=false, optimizationLevel=js::jit::OptimizationLevel::Normal) at js/src/jit/Ion.cpp:2198 #11 0x0831a2cd in js::jit::Compile (cx=cx@entry=0xf791d000, script=script@entry=..., osrFrame=osrFrame@entry=0x0, osrPc=0x0, forceRecompile=false) at js/src/jit/Ion.cpp:2448 #12 0x0831a450 in js::jit::CanEnter (cx=0xf791d000, state=...) at js/src/jit/Ion.cpp:2545 #13 0x081731d7 in js::RunScript (cx=0xf791d000, state=...) at js/src/vm/Interpreter.cpp:386 #14 0x0817374d in js::InternalCallOrConstruct (cx=0xf791d000, args=..., construct=js::CONSTRUCT) at js/src/vm/Interpreter.cpp:488 #15 0x081745ea in InternalConstruct (cx=0xf791d000, cx@entry=0xd7792b00, args=...) at js/src/vm/Interpreter.cpp:563 #16 0x081747d3 in js::ConstructFromStack (cx=0xf791d000, args=...) at js/src/vm/Interpreter.cpp:599 #17 0x0823b967 in js::jit::DoCallFallback (cx=0xf791d000, frame=0xf55ffc98, stub_=0xf79b6030, argc=0, vp=0xf55ffc50, res=...) at js/src/jit/BaselineIC.cpp:2530 #18 0x084fa1f5 in js::jit::Simulator::softwareInterrupt (this=0xf7974000, instr=0xf5077594) at js/src/jit/arm/Simulator-arm.cpp:2624 #19 0x084fa5c6 in js::jit::Simulator::decodeType7 (this=0xf7974000, instr=0xf5077594) at js/src/jit/arm/Simulator-arm.cpp:3784 #20 0x084fbd42 in js::jit::Simulator::instructionDecode (this=0xf7974000, instr=0xf5077594) at js/src/jit/arm/Simulator-arm.cpp:4761 #21 0x084fc294 in js::jit::Simulator::execute<false> (this=0xf7974000) at js/src/jit/arm/Simulator-arm.cpp:4831 #22 js::jit::Simulator::callInternal (this=0xf7974000, entry=0x3db3da38 "\360O-\351\004\320M\342\020\212-\355\r\200\240\341h\220\235\345\r\260\240\341t\240\235", <incomplete sequence \345>) at js/src/jit/arm/Simulator-arm.cpp:4916 #23 0x084fc611 in js::jit::Simulator::call (this=<optimized out>, entry=<optimized out>, argument_count=<optimized out>) at js/src/jit/arm/Simulator-arm.cpp:4999 #24 0x0821a0c2 in EnterBaseline (cx=cx@entry=0xf791d000, data=...) at js/src/jit/BaselineJIT.cpp:162 #25 0x082345dd in js::jit::EnterBaselineMethod (cx=0xf791d000, state=...) at js/src/jit/BaselineJIT.cpp:200 #26 0x08173322 in js::RunScript (cx=0xf791d000, state=...) at js/src/vm/Interpreter.cpp:400 #27 0x081735f8 in js::InternalCallOrConstruct (cx=0xf791d000, args=..., construct=js::NO_CONSTRUCT) at js/src/vm/Interpreter.cpp:488 #28 0x081738af in InternalCall (cx=cx@entry=0xf791d000, args=...) at js/src/vm/Interpreter.cpp:515 #29 0x08173a4a in js::Call (cx=0xf791d000, fval=..., thisv=..., args=..., rval=...) at js/src/vm/Interpreter.cpp:534 #30 0x08566272 in JS_CallFunction (cx=0xf791d000, obj=..., fun=..., args=..., rval=...) at js/src/jsapi.cpp:2907 #31 0x084835e9 in OOMTest (cx=0xf791d000, argc=1, vp=0xf55ffd88) at js/src/builtin/TestingFunctions.cpp:1549 [...] #67 main (argc=5, argv=0xffffcdd4, envp=0xffffcdec) at js/src/shell/js.cpp:8515 eax 0x0 0 ebx 0xffffa224 -24028 ecx 0xf7da4864 -136689564 edx 0x0 0 esi 0xffff9dbc -25156 edi 0xffff99a4 -26204 ebp 0xffff9c38 4294941752 esp 0xffff9900 4294940928 eip 0x8308f8e <js::jit::IonBuilder::inlineScriptedCall(js::jit::CallInfo&, JSFunction*)+2254> => 0x8308f8e <js::jit::IonBuilder::inlineScriptedCall(js::jit::CallInfo&, JSFunction*)+2254>: movl $0x0,0x0 0x8308f98 <js::jit::IonBuilder::inlineScriptedCall(js::jit::CallInfo&, JSFunction*)+2264>: ud2
Keywords: triage-deferred
Priority: -- → P3
Whiteboard: [jsbugmon:update,bisect] → [jsbugmon:update,ignore]
autobisectjs shows this is probably related to the following changeset: The first good revision is: changeset: https://hg.mozilla.org/mozilla-central/rev/261ebf2e8bbd user: Tom Schuster date: Wed Nov 15 16:19:37 2017 +0100 summary: Bug 1319512 - Disable expression closures on Nightly. r=jandem Tom/Jan, is bug 1319512 a likely fix?
Flags: needinfo?(jdemooij)
Flags: needinfo?(evilpies)
I think the test case just broke, because we disabaled function expression. You can try if this still reproduces: function f(arr) {} function test(out) { f(arr); } var obj = {}; try { test(obj); } catch (lfVare) {} loadFile(` function f() { this.e = function() {}; expect.defineProperty(this, test(() => Number.prototype.i.call(-Infinity, 555), i), {} ); } new f(); `); function loadFile(lfVarx) { try { oomTest(new Function(lfVarx)); } catch (lfVare) {} }
Flags: needinfo?(evilpies)
With the testcase in comment 3, autobisectjs shows this is probably related to the following changeset: The first bad revision is: changeset: https://hg.mozilla.org/mozilla-central/rev/0eca45c6fb2d user: Nicolas B. Pierron date: Fri Dec 23 15:54:10 2016 +0000 summary: Bug 1286505 part 2 - Use Result<V,E> to report errors within IonBuilder. r=h4writer However, it no longer seems to reproduce on m-c tip rev 768eef11f5ff either, continuing to dig in...
Flags: needinfo?(jdemooij)
Flags: needinfo?(nicolas.b.pierron)
autobisectjs shows this is probably related to the following changeset: The first good revision is: changeset: https://hg.mozilla.org/mozilla-central/rev/e6be8071c22b user: Nicolas B. Pierron date: Fri Nov 17 13:21:08 2017 +0000 summary: Bug 1416794 - InliningDecision_Error is always reported with a pending exception, use AbortReason_Error instead of _Alloc. r=jandem Nicolas, is bug 1416794 a likely fix?
(In reply to Gary Kwong [:gkw] [:nth10sd] from comment #5) > Nicolas, is bug 1416794 a likely fix? This sounds very likely.
Status: NEW → RESOLVED
Closed: 6 years ago
Flags: needinfo?(nicolas.b.pierron)
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.