Changeset 204085 in webkit


Ignore:
Timestamp:
Aug 3, 2016 10:15:12 AM (8 years ago)
Author:
commit-queue@webkit.org
Message:

http/tests/fetch/fetch-in-worker-crash.html is sometimes crashing
https://bugs.webkit.org/show_bug.cgi?id=160498

Patch by Youenn Fablet <youenn@apple.com> on 2016-08-03
Reviewed by Chris Dumez.

Source/WebCore:

Covered by http/tests/fetch/fetch-in-worker-crash.html.

  • loader/WorkerThreadableLoader.cpp:

(WebCore::WorkerThreadableLoader::MainThreadBridge::cancel): Taking a reference of the client wrapper to ensure it can be cleaned-up successfully.

LayoutTests:

  • http/tests/fetch/fetch-in-worker.js:

(onmessage): Reducing flakiness risk by making fetch http load being delayed.

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r204081 r204085  
     12016-08-03  Youenn Fablet  <youenn@apple.com>
     2
     3        http/tests/fetch/fetch-in-worker-crash.html is sometimes crashing
     4        https://bugs.webkit.org/show_bug.cgi?id=160498
     5
     6        Reviewed by Chris Dumez.
     7
     8        * http/tests/fetch/fetch-in-worker.js:
     9        (onmessage): Reducing flakiness risk by making fetch http load being delayed.
     10
    1112016-08-03  Chris Dumez  <cdumez@apple.com>
    212
  • trunk/LayoutTests/http/tests/fetch/fetch-in-worker.js

    r204020 r204085  
    44        return;
    55
    6     var promise1 = fetch("detached-frame.html").then(() => {
     6    var promise1 = fetch("/misc/resources/delayed-log.php?delay=100").then(() => {
    77        postMessage("FAIL: promise 1 resolved");
    88    }, () => {
  • trunk/Source/WebCore/ChangeLog

    r204083 r204085  
     12016-08-03  Youenn Fablet  <youenn@apple.com>
     2
     3        http/tests/fetch/fetch-in-worker-crash.html is sometimes crashing
     4        https://bugs.webkit.org/show_bug.cgi?id=160498
     5
     6        Reviewed by Chris Dumez.
     7
     8        Covered by http/tests/fetch/fetch-in-worker-crash.html.
     9
     10        * loader/WorkerThreadableLoader.cpp:
     11        (WebCore::WorkerThreadableLoader::MainThreadBridge::cancel): Taking a reference of the client wrapper to ensure it can be cleaned-up successfully.
     12
    1132016-08-02  Anders Carlsson  <andersca@apple.com>
    214
  • trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp

    r204019 r204085  
    150150    });
    151151
    152     ThreadableLoaderClientWrapper* clientWrapper = m_workerClientWrapper.get();
    153     if (!clientWrapper->done()) {
    154         // If the client hasn't reached a termination state, then transition it by sending a cancellation error.
    155         // Note: no more client callbacks will be done after this method -- the clearClientWrapper() call ensures that.
    156         ResourceError error(ResourceError::Type::Cancellation);
    157         clientWrapper->didFail(error);
     152    if (m_workerClientWrapper->done()) {
     153        clearClientWrapper();
     154        return;
    158155    }
    159     clearClientWrapper();
     156    // Taking a ref of client wrapper as call to didFail may take out the last reference of it.
     157    Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper(*m_workerClientWrapper);
     158    // If the client hasn't reached a termination state, then transition it by sending a cancellation error.
     159    // Note: no more client callbacks will be done after this method -- we clear the client wrapper to ensure that.
     160    ResourceError error(ResourceError::Type::Cancellation);
     161    protectedWorkerClientWrapper->didFail(error);
     162    protectedWorkerClientWrapper->clearClient();
    160163}
    161164
Note: See TracChangeset for help on using the changeset viewer.