Closed Bug 939476 Opened 11 years ago Closed 11 years ago

"Assertion failure: phases[phase].parent == parent" with gcparam('markStackLimit')

Categories

(Core :: JavaScript Engine, defect)

x86_64
macOS
defect
Not set
critical

Tracking

()

RESOLVED FIXED
mozilla28

People

(Reporter: jruderman, Assigned: jonco)

References

Details

(Keywords: assertion, testcase)

Attachments

(4 files)

1. Install https://www.squarefree.com/extensions/domFuzzLite3.xpi
2. Load the testcase

Assertion failure: phases[phase].parent == parent, at js/src/gc/Statistics.cpp:629

This assertion was added in:
changeset:   http://hg.mozilla.org/mozilla-central/rev/14893aa56835
user:        Bill McCloskey
date:        Tue Dec 04 18:29:45 2012 -0800
summary:     Bug 817341 - Differentiate marking and sweep-marking in GC stats (r=jonco)
Attached file testcase
Attached file stack
Shell testcase coming up
Shell testcase:

Object.getOwnPropertyNames(this);
gcparam('markStackLimit', 2)
markDelayedChildren() can take place in any of the following phases:

 - PHASE_MARK
 - PHASE_SWEEP_MARK
 - PHASE_SWEEP_MARK_INCOMING_BLACK
 - PHASE_SWEEP_MARK_INCOMING_GRAY
 - PHASE_SWEEP_MARK_GRAY

However only the first two are currently handled, and if it occurs in the others it will trigger this assertion.  Fortunately this is rare outside of deliberately setting markStackLimit.

I'm going to suggest that we only give this a separate phase for marking, and for the other phases it's called in we just roll its time into that phase.

Bill are you ok with that approach?
Flags: needinfo?(wmccloskey)
Yeah, sounds good. Perhaps you could use Maybe<AutoPhase> to implement that?
Flags: needinfo?(wmccloskey)
Here's a patch.  I tried to use Maybe<AutoPhase> but the template construct() definitions only takes const& arguments, so that didn't work for passing Statistics.
Assignee: nobody → jcoppeard
Attachment #8334618 - Flags: review?(wmccloskey)
Comment on attachment 8334618 [details] [diff] [review]
bug939476-stats-phase

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

I guess we could change AutoPhase to take a Statistics* to get around the const T& problem, but this seems fine too.
Attachment #8334618 - Flags: review?(wmccloskey) → review+
Unfortunately this and the other bugs in https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?changeset=db0f8a5eeb33 have been backed out for causing rootanalysis assertions, eg:
https://tbpl.mozilla.org/php/getParsedLog.php?id=30835010&tree=Mozilla-Inbound

Backout:
https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?changeset=05a0228c2caa

(For quick relanding, I recommend the third party qbackout extension and '--apply' mode)
https://hg.mozilla.org/mozilla-central/rev/7762a99ce512
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla28
Keywords: verifyme
Reproduced with Nightly debug build from 2013-11-15 on Ubuntu 13.10 x64: 
Assertion failure: phases[phase].parent == parent, at /builds/slave/m-cen-l64-st-an-d-000000000000/build/js/src/gc/Statistics.cpp:629
No assertions with Fx 28 beta 2 (Build ID: 20140210135004) debug build on the same machine.

On Mac OS X 10.8 on both Nightly and Fx 28 beta 2 debug builds I get:
Assertion failure: isEmpty(), at /builds/slave/m-beta-osx64-d-000000000000000/build/js/src/jsgc.h:981 ; maybe bug 939499?
I suppose because of bug 939499 I cannot see/verify this failure.
Is there any other way to verify this fix on Mac OS X too and do not hit Assertion failure: isEmpty()?
Flags: needinfo?(jcoppeard)
(In reply to Alexandra Lucinet, QA Mentor [:adalucinet] from comment #13)
I don't know why you're getting that failure.  It seems like bug 939499 should only apply if verifyprebarriers() is called first, and there should be no difference between Mac OS and Linux either.

Just to confirm what's happening, can you post a backtrace of the assertion?

I'll have a look at bug 939499 as well.
Flags: needinfo?(jcoppeard)
Attached file console log
This is what I get in the console.
Do you need something more specific? If yes, which tool should I use to get that?
Keywords: verifyme
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: