Changeset 212698 in webkit


Ignore:
Timestamp:
Feb 20, 2017 9:02:32 PM (7 years ago)
Author:
commit-queue@webkit.org
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 <Joseph Pecoraro> 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:

Unskip tests now that they no longer trigger assertions.

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r212696 r212698  
     12017-02-20  Joseph Pecoraro  <pecoraro@apple.com>
     2
     3        ASSERTION FAILED: m_normalWorld->hasOneRef() under WorkerThread::stop
     4        https://bugs.webkit.org/show_bug.cgi?id=168356
     5        <rdar://problem/30592486>
     6
     7        Reviewed by Ryosuke Niwa.
     8
     9        * TestExpectations:
     10        Unskip tests now that they no longer trigger assertions.
     11
    1122017-02-20  Jer Noble  <jer.noble@apple.com>
    213
  • trunk/LayoutTests/TestExpectations

    r212569 r212698  
    311311imported/w3c/web-platform-tests/XMLHttpRequest/responsexml-document-properties.htm [ Failure ]
    312312
    313 # Failing with dynamic URLs.
     313webkit.org/b/161088 imported/w3c/web-platform-tests/resource-timing/resource-timing.html [ Pass Failure ]
    314314webkit.org/b/168357 imported/w3c/web-platform-tests/resource-timing/rt-initiatorType-media.html [ Failure ]
    315 
    316315webkit.org/b/168448 imported/w3c/web-platform-tests/resource-timing/rt-shared-resource-in-frames.html [ Pass Failure ]
    317316webkit.org/b/168448 imported/w3c/web-platform-tests/resource-timing/rt-shared-resource-in-workers.html [ Pass Failure ]
     
    980979webkit.org/b/160017 js/regress-139548.html [ Slow ]
    981980
    982 webkit.org/b/161088 imported/w3c/web-platform-tests/resource-timing/resource-timing.html [ Pass Failure ]
    983 
    984 webkit.org/b/168356 [ Debug ] imported/w3c/web-platform-tests/resource-timing [ Skip ]
    985 
    986981# Only iOS has implemented lettepress.
    987982fast/text/letterpress-different.html [ ImageOnlyFailure ]
  • trunk/Source/WebCore/ChangeLog

    r212696 r212698  
     12017-02-20  Joseph Pecoraro  <pecoraro@apple.com>
     2
     3        ASSERTION FAILED: m_normalWorld->hasOneRef() under WorkerThread::stop
     4        https://bugs.webkit.org/show_bug.cgi?id=168356
     5        <rdar://problem/30592486>
     6
     7        Reviewed by Ryosuke Niwa.
     8
     9        * page/DOMWindow.cpp:
     10        (WebCore::DOMWindow::removeAllEventListeners):
     11        Remove Performance object EventListeners.
     12
     13        * workers/WorkerGlobalScope.cpp:
     14        (WebCore::WorkerGlobalScope::~WorkerGlobalScope):
     15        (WebCore::WorkerGlobalScope::removeAllEventListeners):
     16        (WebCore::WorkerGlobalScope::performance):
     17        * workers/WorkerGlobalScope.h:
     18        Remove Performance object EventListeners.
     19        Also clear Performance early in destruction since its ContextDestructionObserver
     20        destruction makes checks about the WorkerThread.
     21
    1222017-02-20  Jer Noble  <jer.noble@apple.com>
    223
  • trunk/Source/WebCore/page/DOMWindow.cpp

    r212448 r212698  
    20282028#endif
    20292029
     2030#if ENABLE(WEB_TIMING)
     2031    if (m_performance)
     2032        m_performance->removeAllEventListeners();
     2033#endif
     2034
    20302035    removeAllUnloadEventListeners(this);
    20312036    removeAllBeforeUnloadEventListeners(this);
  • trunk/Source/WebCore/workers/WorkerGlobalScope.cpp

    r212448 r212698  
    9898    ASSERT(currentThread() == thread().threadID());
    9999
     100#if ENABLE(WEB_TIMING)
     101    m_performance = nullptr;
     102#endif
     103
    100104    // Notify proxy that we are going away. This can free the WorkerThread object, so do not access it after this.
    101105    thread().workerReportingProxy().workerGlobalScopeDestroyed();
     106}
     107
     108void WorkerGlobalScope::removeAllEventListeners()
     109{
     110    EventTarget::removeAllEventListeners();
     111
     112#if ENABLE(WEB_TIMING)
     113    m_performance->removeAllEventListeners();
     114#endif
    102115}
    103116
     
    359372Performance& WorkerGlobalScope::performance() const
    360373{
    361     return m_performance;
     374    return *m_performance;
    362375}
    363376
  • trunk/Source/WebCore/workers/WorkerGlobalScope.h

    r211665 r212698  
    105105#endif
    106106
     107    void removeAllEventListeners() final;
     108
    107109protected:
    108110    WorkerGlobalScope(const URL&, const String& identifier, const String& userAgent, WorkerThread&, bool shouldBypassMainWorldContentSecurityPolicy, Ref<SecurityOrigin>&& topOrigin, MonotonicTime timeOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
     
    178180
    179181#if ENABLE(WEB_TIMING)
    180     Ref<Performance> m_performance;
     182    RefPtr<Performance> m_performance;
    181183#endif
    182184
Note: See TracChangeset for help on using the changeset viewer.