Closed Bug 761864 Opened 13 years ago Closed 13 years ago

Assertion failure: [barrier verifier] Unmarked edge: scope chain, at jsgc.cpp:4443

Categories

(Core :: JavaScript Engine, defect)

x86
Linux
defect
Not set
critical

Tracking

()

VERIFIED FIXED
mozilla16
Tracking Status
firefox15 --- unaffected
firefox16 + fixed
firefox-esr10 --- unaffected

People

(Reporter: decoder, Assigned: luke)

References

Details

(4 keywords, Whiteboard: js-triage-done [advisory-tracking-])

Attachments

(2 files, 2 obsolete files)

The attached test asserts on mozilla-central revision cf4face65451 (options -m -n): Assuming s-s due to GC-related assertion.
This is bug 659577.
Assignee: general → luke
Attached patch fix and test (obsolete) — Splinter Review
So what was happening is this: 1. when we start the igc, the suspended generator frame's scope is reachable 2. then we execute code which closes the generator 3. when verifying, the closed generator is no longer traced, so the scope chain isn't reachable and there wasn't a write barrier that marked it The regression is that https://hg.mozilla.org/mozilla-central/rev/b863ef9946b8#l31.66 made us not trace generator frames of closed generators without adding a write barrier. Instead of adding a write barrier, I'll revert the change (so closed generators are still traced) and just fix the original problem differently (see comment on onGeneratorFrameChange).
Attachment #630790 - Flags: review?
Attached patch fix and test (obsolete) — Splinter Review
Oops, wrong version
Attachment #630790 - Attachment is obsolete: true
Attachment #630790 - Flags: review?
Attachment #630839 - Flags: review?
Attachment #630839 - Flags: review? → review+
After thinking about it a bit more, I realized that the better fix is to just use the same pre-write barrier that we use when copying a generator onto the VM stack when the generator is closed.
Attachment #630839 - Attachment is obsolete: true
Attachment #631582 - Flags: review?(terrence)
Comment on attachment 631582 [details] [diff] [review] better fix and test Review of attachment 631582 [details] [diff] [review]: ----------------------------------------------------------------- This is a nice cleanup. ::: js/src/jsiter.cpp @@ +1474,5 @@ > return obj; > } > > +static void > +SetGeneratorClosed(JSContext *cx, JSGenerator *gen); Why do we need to forward declare this below the definition?
Attachment #631582 - Flags: review?(terrence) → review+
(In reply to Terrence Cole [:terrence] from comment #5) Oops, I read this right after pushing. I'll throw it away in a subsequent patch. https://hg.mozilla.org/integration/mozilla-inbound/rev/bef8d091055a
Target Milestone: --- → mozilla16
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → FIXED
Whiteboard: js-triage-needed → js-triage-done
JSBugMon: This bug has been automatically verified fixed.
Status: RESOLVED → VERIFIED
(In reply to Luke Wagner [:luke] from comment #1) > This is bug 659577. I've interpreted this as saying it's a regression from that bug, and that therefore we don't need this in earlier builds. Please clear "unaffected" from those status fields if this is incorrect.
Can anyone suggest a security rating for this?
Whiteboard: js-triage-done → js-triage-done [advisory-tracking+]
(In reply to Daniel Veditz [:dveditz] from comment #9) > (In reply to Luke Wagner [:luke] from comment #1) > > This is bug 659577. > > I've interpreted this as saying it's a regression from that bug, and that > therefore we don't need this in earlier builds. Please clear "unaffected" > from those status fields if this is incorrect. How is this true when bug 761863 is also marked as bug 659577 and is marked as won't fix for 14 and 15?
> How is this true when bug 761863 is also marked as bug 659577 and is marked > as won't fix for 14 and 15? I just marked bug 761863 as WONTFIX at this point in time, for 14 because 14 is already EOL, and 15 because 16 is being released soon (in ~2 weeks).
Luke is out, but I think that comment 9 in bug 761863 is incorrect. I've fixed the flags there.
No longer tracking for 16 advisories then.
Whiteboard: js-triage-done [advisory-tracking+] → js-triage-done [advisory-tracking-]
Group: core-security
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: