RESOLVED FIXED 72179
JSC wrappers for TextTrack and TextTrackCue should not be collected during event dispatch or when owner is reachable
https://bugs.webkit.org/show_bug.cgi?id=72179
Summary JSC wrappers for TextTrack and TextTrackCue should not be collected during ev...
Anna Cavender
Reported 2011-11-11 13:52:52 PST
According to eric.carlson: Every non-DOM object that is an EventTarget needs code (for JSC at lease, I don't know about V8) to make sure that the wrapper isn't collected during event dispatch or while the parent/owner object is reachable. For example, see JSTextTrackListOwner::isReachableFromOpaqueRoots and the tracklist-is-reachable.html test added in https://bugs.webkit.org/show_bug.cgi?id=71123.
Attachments
Proposed patch (26.00 KB, patch)
2011-12-05 17:46 PST, Eric Carlson
no flags
Updated patch (26.09 KB, patch)
2011-12-05 20:52 PST, Eric Carlson
ggaren: review+
Anna Cavender
Comment 1 2011-11-14 13:22:32 PST
*** Bug 72149 has been marked as a duplicate of this bug. ***
Radar WebKit Bug Importer
Comment 2 2011-11-17 12:38:31 PST
Eric Carlson
Comment 3 2011-12-05 14:15:18 PST
Wrote up 73865 for the V8 changes.
Eric Carlson
Comment 4 2011-12-05 17:46:29 PST
Created attachment 117966 [details] Proposed patch
WebKit Review Bot
Comment 5 2011-12-05 17:52:16 PST
Attachment 117966 [details] did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'LayoutTests/ChangeLog', u'LayoutTests/medi..." exit_code: 1 LayoutTests/ChangeLog:8: Need whitespace between colon and description [changelog/filechangedescriptionwhitespace] [5] LayoutTests/ChangeLog:10: Need whitespace between colon and description [changelog/filechangedescriptionwhitespace] [5] Total errors found: 2 in 19 files If any of these errors are false positives, please file a bug against check-webkit-style.
Eric Carlson
Comment 6 2011-12-05 20:52:46 PST
Created attachment 117985 [details] Updated patch Fix the malformed ChangeLog.
Geoffrey Garen
Comment 7 2011-12-06 20:36:02 PST
Comment on attachment 117985 [details] Updated patch View in context: https://bugs.webkit.org/attachment.cgi?id=117985&action=review r=me > Source/WebCore/bindings/js/JSTextTrackCueCustom.cpp:57 > + return visitor.containsOpaqueRoot(root(textTrackCue->track()->mediaElement())); Slightly nicer to call "root(textTrackCue->track())", and put root(TextTrack*) inline in a header. That way, if a text track ever changes its mind about what its root is, we only have to update one function. > Source/WebCore/bindings/js/JSTextTrackCustom.cpp:52 > + return visitor.containsOpaqueRoot(root(textTrack->mediaElement())); This would be "root(textTrack)", if you followed my advice above. > Source/WebCore/html/track/TextTrackList.cpp:93 > + scheduleAddTrackEvent(track); Can this be "track.release()"? > Source/WebCore/html/track/TextTrackList.cpp:96 > +void TextTrackList::remove(PassRefPtr<TextTrack> prpTrack) Seems like prpTrack should just be a raw pointer, since we don't take ownership.
Eric Carlson
Comment 8 2011-12-09 13:35:17 PST
Ryosuke Niwa
Comment 9 2011-12-23 19:49:46 PST
Note You need to log in before you can comment on or make changes to this bug.