Title: [217581] trunk/Source/WebCore
Revision
217581
Author
[email protected]
Date
2017-05-30 14:59:14 -0700 (Tue, 30 May 2017)

Log Message

m_resourceSelectionTaskQueue tasks should be cleared when player is destroyed to prevent invalid state.
https://bugs.webkit.org/show_bug.cgi?id=172726
rdar://problem/30867764

Patch by Jeremy Jones <[email protected]> on 2017-05-30
Reviewed by Eric Carlson.

I haven't found a reproducible way to make a test case for this race condition.

If m_player is cleared while there is an outstanding task in m_resourceSelectionTaskQueue,
that task may assume m_player is not null and crash. It is better to cancel that task than
to perform it part way with null checks.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::~HTMLMediaElement):
(WebCore::HTMLMediaElement::clearMediaPlayer):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (217580 => 217581)


--- trunk/Source/WebCore/ChangeLog	2017-05-30 21:54:52 UTC (rev 217580)
+++ trunk/Source/WebCore/ChangeLog	2017-05-30 21:59:14 UTC (rev 217581)
@@ -1,3 +1,21 @@
+2017-05-30  Jeremy Jones  <[email protected]>
+
+        m_resourceSelectionTaskQueue tasks should be cleared when player is destroyed to prevent invalid state.
+        https://bugs.webkit.org/show_bug.cgi?id=172726
+        rdar://problem/30867764
+
+        Reviewed by Eric Carlson.
+
+        I haven't found a reproducible way to make a test case for this race condition.
+
+        If m_player is cleared while there is an outstanding task in m_resourceSelectionTaskQueue,
+        that task may assume m_player is not null and crash. It is better to cancel that task than
+        to perform it part way with null checks.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::~HTMLMediaElement):
+        (WebCore::HTMLMediaElement::clearMediaPlayer):
+
 2017-05-30  Ryosuke Niwa  <[email protected]>
 
         Only include DataDetectorsUI headers in iOS

Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (217580 => 217581)


--- trunk/Source/WebCore/html/HTMLMediaElement.cpp	2017-05-30 21:54:52 UTC (rev 217580)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp	2017-05-30 21:59:14 UTC (rev 217581)
@@ -583,6 +583,7 @@
     m_pauseAfterDetachedTaskQueue.close();
     m_updatePlaybackControlsManagerQueue.close();
     m_playbackControlsManagerBehaviorRestrictionsQueue.close();
+    m_resourceSelectionTaskQueue.close();
 
     m_completelyLoaded = true;
 
@@ -5217,6 +5218,8 @@
     m_mediaSession->clientCharacteristicsChanged();
     m_mediaSession->canProduceAudioChanged();
 
+    m_resourceSelectionTaskQueue.cancelAllTasks();
+
     updateSleepDisabling();
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to