Closed Bug 921035 Opened 11 years ago Closed 11 years ago

Assertion failure: hasCallObj(), at ../jit/BaselineFrame-inl.h:73 or Crash [@ callObj]

Categories

(Core :: JavaScript Engine, defect)

x86_64
Linux
defect
Not set
critical

Tracking

()

RESOLVED FIXED
mozilla27
Tracking Status
firefox24 --- unaffected
firefox25 --- unaffected
firefox26 --- unaffected
firefox27 --- affected
firefox-esr17 --- unaffected
firefox-esr24 --- unaffected

People

(Reporter: decoder, Assigned: djvj)

References

Details

(4 keywords, Whiteboard: [jsbugmon:])

Crash Data

Attachments

(2 files)

The following testcase asserts on mozilla-central revision e85b0372cece (run with --fuzzing-safe --ion-eager):


function $ERROR() {}
function testMultipleArgumentsObjects() {
    var testargs = arguments;
    var f = function (which) {
        var args = [ testargs ];
        return args[which][0];
    };
    var arr = [0, 0, 0, 0, 1];
    for (var i = 0; i < arr.length; i++)
        $ERROR[i] = f(arr[i]);
}
testMultipleArgumentsObjects()
Crash Signature: [@ callObj]
Keywords: crash
Whiteboard: [jsbugmon:update,bisect]
Whiteboard: [jsbugmon:update,bisect] → [jsbugmon:update]
JSBugMon: Bisection requested, result:
autoBisect shows this is probably related to the following changeset:

The first bad revision is:
changeset:   http://hg.mozilla.org/mozilla-central/rev/cd646a300ffe
user:        Kannan Vijayan
date:        Mon Sep 23 10:50:30 2013 -0400
summary:     Bug 918405 - Enable OSR-ing into Ion in functions with needsArgsObj. r=h4writer

This iteration took 400.086 seconds to run.
Kannan, is bug 918405 a likely regressor?
Blocks: 918405
Flags: needinfo?(kvijayan)
Keywords: regression
Thanks!
Thanks!
Thanks!
Flags: needinfo?(kvijayan)
Please stop spamming bugs and cancelling flags.
Flags: needinfo?(kvijayan)
(In reply to Gary Kwong [:gkw] [:nth10sd] (still catching up on bugmail) from comment #3)
> Kannan, is bug 918405 a likely regressor?

Yes.  There's a good chance it's a regressor.
Flags: needinfo?(kvijayan)
Whiteboard: [jsbugmon:update] → [jsbugmon:update,ignore]
JSBugMon: The testcase found in this bug no longer reproduces (tried revision ddd03c32fab1).
Whiteboard: [jsbugmon:update,ignore] → [jsbugmon:bisectfix]
Whiteboard: [jsbugmon:bisectfix] → [jsbugmon:]
JSBugMon: Fix Bisection requested, result:
autoBisect shows this is probably related to the following changeset:

The first good revision is:
changeset:   http://hg.mozilla.org/mozilla-central/rev/27921f21cddf
user:        Phil Ringnalda
date:        Mon Oct 14 14:03:03 2013 -0700
summary:     Back out 755ecb4d6e2c and 7ea09c8bf385 (bug 925962) for bustage

This iteration took 422.358 seconds to run.
I don't think bug 925962 is actually related to the issue.  I also think bug 918405 revealed the issue but is not the cause of it.

I haven't fully narrowed this down yet, but as far as I can tell, the function |testMultipleArgumentsObjects| is heavyweight, has a call object created for it when running in baseline, enters Ion via OSR (and the Call object is correctly carried into the Ion entry).. however, later there's a bailout from an inlined call to |f| within |testMultipleArgumentsObjects|, and when unpacking scopeChain objects from the snapshot in this bailout, the call object is not being captured.

Looking at the IonGraph spew for the function, during the Eliminate phis pass, the ResumePoint handle to the scope chain definition seems to be "lost" (refers to a nonexistant definition).
Assignee: general → kvijayan
Yeah, aggressive phi elimination is getting rid of the scopeChain even though we may need it later to construct an arguments object.
Attachment #817359 - Flags: review?(hv1989)
Comment on attachment 817359 [details] [diff] [review]
save-scope-chain.patch

Review of attachment 817359 [details] [diff] [review]:
-----------------------------------------------------------------

Good find. Would be good to have an active testcase for this in jit-tests in order to not regress this.
Attachment #817359 - Flags: review?(hv1989) → review+
Tried to create a testcase that asserted on tip for this yesterday, didn't get anywhere.  I'm checking in with the original test case, which is better than nothing.
Turns out the original test case is worse than nothing, because it'll get you backed out in http://hg.mozilla.org/integration/mozilla-inbound/rev/062d17374196 by failing like https://tbpl.mozilla.org/php/getParsedLog.php?id=29195313&tree=Mozilla-Inbound ;)
Forgot that the correct outcome for that test case is for it to throw.  Will check in shortly.
https://hg.mozilla.org/mozilla-central/rev/e41c12eedc22
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla27
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: