Closed Bug 813029 Opened 12 years ago Closed 12 years ago

IonMonkey: Assertion failure: ((gc::Cell*)vp->toGCThing())->compartment()->needsBarrier(), at ion/Ion.cpp:1878

Categories

(Core :: JavaScript Engine, defect)

x86_64
Linux
defect
Not set
critical

Tracking

()

RESOLVED FIXED
mozilla20

People

(Reporter: decoder, Assigned: bhackett1024)

References

Details

(Keywords: assertion, testcase, Whiteboard: [jsbugmon:update])

Attachments

(1 file)

The following testcase asserts on mozilla-central revision 4fddb9923ef0 (run with --ion-eager):


function printBugNumber (num) {
  BUGNUMBER = num;
}
gcslice(0)
schedulegc(this);
gcslice(1);
var BUGNUMBER = ("one");
printBugNumber();
S-s due to GC-related assertion.
Blocks: IonFuzz
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:   113229:6ba78023b367
user:        Brian Hackett
date:        Wed Nov 14 06:46:31 2012 -0800
summary:     Eagerly generate a single copy of Ion stubs and wrappers, bug 786146. r=dvander

This iteration took 119.548 seconds to run.
This assertion is now at line 1884. It looks like MarkFromIon is being called on a compartment that doesn't need a barrier.

The description in bug 786146 says: "The stubs are allocated in the atoms compartment and, once created, are not collected until the runtime is destroyed."

...so maybe barriers are being used on the stubs, and maybe that isn't needed any more because they are in the atoms compartment?
Attached patch patchSplinter Review
The bisection here is wrong, the assert that is failing was added by bug 812235 to fix a bogus assert that was tripping because of the revision being blamed here.  Bug 812235 added a new assert to try to capture better the assert that was tripping --- that we only try to incrementally mark things in compartments that are being collected --- but even that new assert is wrong, as during an IGC we can try to incrementally mark atoms even if the atoms compartment is being collected.

The attached patch just removes the assert.
Assignee: general → bhackett1024
Attachment #684693 - Flags: review?(dvander)
Bogus assert, not s-s.
Group: core-security
(In reply to Brian Hackett (:bhackett) from comment #4)
>  we can try to incrementally mark atoms even if the atoms compartment is being collected.

... even if the atoms compartment is *not* being collected.  Need to proofread more...
Attachment #684693 - Flags: review?(dvander) → review+
https://hg.mozilla.org/mozilla-central/rev/2e246c0a2edf
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla20
Automatically extracted testcase for this bug was committed:

https://hg.mozilla.org/mozilla-central/rev/efaf8960a929
Flags: in-testsuite+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: