Closed Bug 981462 Opened 11 years ago Closed 11 years ago

GenerationalGC: Crash [@ js::ObjectImpl::compartment] or Opt-Crash [@ js::ArrayBufferObject::sweep]

Categories

(Core :: JavaScript Engine, defect)

x86_64
Linux
defect
Not set
major

Tracking

()

VERIFIED FIXED
mozilla31
Tracking Status
firefox31 --- verified

People

(Reporter: decoder, Assigned: jonco)

References

Details

(Keywords: crash, Whiteboard: [jsbugmon:update,bisect,ignore][qa-])

Crash Data

Attachments

(1 file)

The following testcase crashes on mozilla-central built with --enable-exact-rooting --enable-gcgenerational, revision d01bf8596d3b (run with --fuzzing-safe): gcPreserveCode(); function reportCompare (expected, actual, description) { "', Actual value '" + toPrinted(actual) + "' "; if (typeof document != "object" || !document.location.href.match(/jsreftest.html/)) {} } gczeal(9, 1) try { var StructType = TypedObject.StructType; var uint8 = TypedObject.uint8; function assertEqColor(c1, c2) assertEq(c1.b, c2.b); var RgbColor = new StructType({r: uint8, g: uint8, b: uint8}); var Fade = new StructType({from: RgbColor, to: RgbColor}); var white = new RgbColor({r: 255, g: 255, b: 255}); var fade = new Fade({from: white, to: white}); assertEqColor(white, fade.from); assertEqColor(white, fade.to); reportCompare(true, true); } catch(exc1) {}
Reproduced in debug build with the following simplified test case: gcPreserveCode(); var StructType = TypedObject.StructType; var uint8 = TypedObject.uint8; function assertEqColor(c1, c2) assertEq(c1.b, c2.b); var RgbColor = new StructType({r: uint8, g: uint8, b: uint8}); var Fade = new StructType({from: RgbColor, to: RgbColor}); var white = new RgbColor({r: 255, g: 255, b: 255}); gczeal(9, 1); var fade = new Fade({from: white, to: white}); assertEqColor(white, fade.from); assertEqColor(white, fade.to);
Looks like this was introduced by the fix for bug 978387.
Assignee: nobody → jcoppeard
The fix is to save and restore the live array buffer list over minor GC if we are in the middle of an incremental collection. This unfortunately adds another unhandlable OOM situation though.
Attachment #8393012 - Flags: review?(terrence)
Whiteboard: [jsbugmon:update,bisect] → [jsbugmon:update,bisect,ignore]
JSBugMon: The testcase found in this bug no longer reproduces (tried revision 082761b7bc54).
Comment on attachment 8393012 [details] [diff] [review] bug981462-liveArrayBufferLists Review of attachment 8393012 [details] [diff] [review]: ----------------------------------------------------------------- Great find! r=me
Attachment #8393012 - Flags: review?(terrence) → review+
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla31
(In reply to Christian Holler (:decoder) from comment #4) > JSBugMon: The testcase found in this bug no longer reproduces (tried > revision 082761b7bc54). Changing testcase to testcase-wanted as per this comment.
Whiteboard: [jsbugmon:update,bisect,ignore] → [jsbugmon:update,bisect,ignore][qa-]
Assuming verified fixed based on 0 reports of this signature in the last week on crash-stats.
Status: RESOLVED → VERIFIED
Flags: in-testsuite?
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: