Closed Bug 712480 Opened 8 years ago Closed 8 years ago

Assert in most JSAPI functions that we're not inside a GC

Categories

(Core :: JavaScript Engine, defect)

defect
Not set

Tracking

()

RESOLVED FIXED
mozilla12

People

(Reporter: billm, Assigned: billm)

References

Details

Attachments

(1 file)

Bug 711794 is a case where a finalizer is calling a JSAPI function that can GC. We should be able to assert against this.

We would have to identify a subset of the API that is safe. Things like getting reserved slots probably should be allowed during finalization. But most things should not. It probably makes sense to add asserts on every JSAPI function and then remove them as needed to get a browser running.

Brian, do you think Sixgill could help here? One problem I can foresee is that it's not obvious from Ben Turner's patch in the bug that it completely eliminates the possibility of calling XPCOM release code--in particular if the runtime is null. However, if we could annotate certain choke points like this one as being okay, then maybe it would be practical.
Attached patch patchSplinter Review
With Ben's patch applied, this is green on tryserver.
Attachment #584629 - Flags: review?(luke)
Comment on attachment 584629 [details] [diff] [review]
patch

Switching to Waldo for a quicker review.
Attachment #584629 - Flags: review?(luke) → review?(jwalden+bmo)
Comment on attachment 584629 [details] [diff] [review]
patch

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

r=me if it passes try.  And even if it does, I expect fallout for awhile from this.  But it is a Good Thing even still.
Attachment #584629 - Flags: review?(jwalden+bmo) → review+
Yeah, we'll have to keep a close watch on this.

https://hg.mozilla.org/integration/mozilla-inbound/rev/edffd43801d9
Target Milestone: --- → mozilla12
https://hg.mozilla.org/mozilla-central/rev/edffd43801d9
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.