Title: [212698] trunk
- Revision
- 212698
- Author
- commit-qu...@webkit.org
- Date
- 2017-02-20 21:02:32 -0800 (Mon, 20 Feb 2017)
Log Message
ASSERTION FAILED: m_normalWorld->hasOneRef() under WorkerThread::stop
https://bugs.webkit.org/show_bug.cgi?id=168356
<rdar://problem/30592486>
Patch by Joseph Pecoraro <pecor...@apple.com> on 2017-02-20
Reviewed by Ryosuke Niwa.
Source/WebCore:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::removeAllEventListeners):
Remove Performance object EventListeners.
* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::~WorkerGlobalScope):
(WebCore::WorkerGlobalScope::removeAllEventListeners):
(WebCore::WorkerGlobalScope::performance):
* workers/WorkerGlobalScope.h:
Remove Performance object EventListeners.
Also clear Performance early in destruction since its ContextDestructionObserver
destruction makes checks about the WorkerThread.
LayoutTests:
* TestExpectations:
Unskip tests now that they no longer trigger assertions.
Modified Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (212697 => 212698)
--- trunk/LayoutTests/ChangeLog 2017-02-21 04:44:17 UTC (rev 212697)
+++ trunk/LayoutTests/ChangeLog 2017-02-21 05:02:32 UTC (rev 212698)
@@ -1,3 +1,14 @@
+2017-02-20 Joseph Pecoraro <pecor...@apple.com>
+
+ ASSERTION FAILED: m_normalWorld->hasOneRef() under WorkerThread::stop
+ https://bugs.webkit.org/show_bug.cgi?id=168356
+ <rdar://problem/30592486>
+
+ Reviewed by Ryosuke Niwa.
+
+ * TestExpectations:
+ Unskip tests now that they no longer trigger assertions.
+
2017-02-20 Jer Noble <jer.no...@apple.com>
Local audio-only stream will not trigger playback to begin
Modified: trunk/LayoutTests/TestExpectations (212697 => 212698)
--- trunk/LayoutTests/TestExpectations 2017-02-21 04:44:17 UTC (rev 212697)
+++ trunk/LayoutTests/TestExpectations 2017-02-21 05:02:32 UTC (rev 212698)
@@ -310,9 +310,8 @@
# Failing assertion with dynamic message
imported/w3c/web-platform-tests/XMLHttpRequest/responsexml-document-properties.htm [ Failure ]
-# Failing with dynamic URLs.
+webkit.org/b/161088 imported/w3c/web-platform-tests/resource-timing/resource-timing.html [ Pass Failure ]
webkit.org/b/168357 imported/w3c/web-platform-tests/resource-timing/rt-initiatorType-media.html [ Failure ]
-
webkit.org/b/168448 imported/w3c/web-platform-tests/resource-timing/rt-shared-resource-in-frames.html [ Pass Failure ]
webkit.org/b/168448 imported/w3c/web-platform-tests/resource-timing/rt-shared-resource-in-workers.html [ Pass Failure ]
@@ -979,10 +978,6 @@
webkit.org/b/160017 js/regress-139548.html [ Slow ]
-webkit.org/b/161088 imported/w3c/web-platform-tests/resource-timing/resource-timing.html [ Pass Failure ]
-
-webkit.org/b/168356 [ Debug ] imported/w3c/web-platform-tests/resource-timing [ Skip ]
-
# Only iOS has implemented lettepress.
fast/text/letterpress-different.html [ ImageOnlyFailure ]
Modified: trunk/Source/WebCore/ChangeLog (212697 => 212698)
--- trunk/Source/WebCore/ChangeLog 2017-02-21 04:44:17 UTC (rev 212697)
+++ trunk/Source/WebCore/ChangeLog 2017-02-21 05:02:32 UTC (rev 212698)
@@ -1,3 +1,24 @@
+2017-02-20 Joseph Pecoraro <pecor...@apple.com>
+
+ ASSERTION FAILED: m_normalWorld->hasOneRef() under WorkerThread::stop
+ https://bugs.webkit.org/show_bug.cgi?id=168356
+ <rdar://problem/30592486>
+
+ Reviewed by Ryosuke Niwa.
+
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::removeAllEventListeners):
+ Remove Performance object EventListeners.
+
+ * workers/WorkerGlobalScope.cpp:
+ (WebCore::WorkerGlobalScope::~WorkerGlobalScope):
+ (WebCore::WorkerGlobalScope::removeAllEventListeners):
+ (WebCore::WorkerGlobalScope::performance):
+ * workers/WorkerGlobalScope.h:
+ Remove Performance object EventListeners.
+ Also clear Performance early in destruction since its ContextDestructionObserver
+ destruction makes checks about the WorkerThread.
+
2017-02-20 Jer Noble <jer.no...@apple.com>
Local audio-only stream will not trigger playback to begin
Modified: trunk/Source/WebCore/page/DOMWindow.cpp (212697 => 212698)
--- trunk/Source/WebCore/page/DOMWindow.cpp 2017-02-21 04:44:17 UTC (rev 212697)
+++ trunk/Source/WebCore/page/DOMWindow.cpp 2017-02-21 05:02:32 UTC (rev 212698)
@@ -2027,6 +2027,11 @@
controller->removeAllDeviceEventListeners(this);
#endif
+#if ENABLE(WEB_TIMING)
+ if (m_performance)
+ m_performance->removeAllEventListeners();
+#endif
+
removeAllUnloadEventListeners(this);
removeAllBeforeUnloadEventListeners(this);
}
Modified: trunk/Source/WebCore/workers/WorkerGlobalScope.cpp (212697 => 212698)
--- trunk/Source/WebCore/workers/WorkerGlobalScope.cpp 2017-02-21 04:44:17 UTC (rev 212697)
+++ trunk/Source/WebCore/workers/WorkerGlobalScope.cpp 2017-02-21 05:02:32 UTC (rev 212698)
@@ -97,10 +97,23 @@
{
ASSERT(currentThread() == thread().threadID());
+#if ENABLE(WEB_TIMING)
+ m_performance = nullptr;
+#endif
+
// Notify proxy that we are going away. This can free the WorkerThread object, so do not access it after this.
thread().workerReportingProxy().workerGlobalScopeDestroyed();
}
+void WorkerGlobalScope::removeAllEventListeners()
+{
+ EventTarget::removeAllEventListeners();
+
+#if ENABLE(WEB_TIMING)
+ m_performance->removeAllEventListeners();
+#endif
+}
+
void WorkerGlobalScope::applyContentSecurityPolicyResponseHeaders(const ContentSecurityPolicyResponseHeaders& contentSecurityPolicyResponseHeaders)
{
contentSecurityPolicy()->didReceiveHeaders(contentSecurityPolicyResponseHeaders);
@@ -358,7 +371,7 @@
Performance& WorkerGlobalScope::performance() const
{
- return m_performance;
+ return *m_performance;
}
#endif
Modified: trunk/Source/WebCore/workers/WorkerGlobalScope.h (212697 => 212698)
--- trunk/Source/WebCore/workers/WorkerGlobalScope.h 2017-02-21 04:44:17 UTC (rev 212697)
+++ trunk/Source/WebCore/workers/WorkerGlobalScope.h 2017-02-21 05:02:32 UTC (rev 212698)
@@ -104,6 +104,8 @@
Performance& performance() const;
#endif
+ void removeAllEventListeners() final;
+
protected:
WorkerGlobalScope(const URL&, const String& identifier, const String& userAgent, WorkerThread&, bool shouldBypassMainWorldContentSecurityPolicy, Ref<SecurityOrigin>&& topOrigin, MonotonicTime timeOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
@@ -177,7 +179,7 @@
#endif
#if ENABLE(WEB_TIMING)
- Ref<Performance> m_performance;
+ RefPtr<Performance> m_performance;
#endif
mutable RefPtr<Crypto> m_crypto;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes