• horo@chromium.org's avatar
    [ServiceWorker] Add NULL check of ExecutionContext in FetchBodyStream::readAsync · 3034deef
    horo@chromium.org authored
    scriptState->executionContext() returns NULL in the following situation.
    
    [Main thread]
    - WorkerThread::stop()
     - m_workerGlobalScope->script()->scheduleExecutionTermination();
      - v8::V8::TerminateExecution(m_isolate);
    
    [Worker thread]
    - FetchBodyStream::readAsync()
     - ScriptPromiseResolver::create()
      ---> v8::Promise::Resolver::New()
         - v8::internal::Execution::Call
          - v8::internal::Invoke
           - JS
            - v8::internal::__RT_impl_Runtime_StackGuard
             - v8::internal::Isolate::TerminateExecution()
                Sets TerminationException.
     - scriptState->executionContext()
      - toExecutionContext()
       - V8WorkerGlobalScope::findInstanceInPrototypeChain()
        - V8PerIsolateData::findInstanceInPrototypeChain()
         - V8PerIsolateData::findInstanceInPrototypeChain()
          - v8::Object::FindInstanceInPrototypeChain()
           - ON_BAILOUT(isolate,
                        "v8::Object::FindInstanceInPrototypeChain()",
                        return Local<v8::Object>());
            - IsExecutionTerminatingCheck()
              Returns true.
    
    BUG=409755
    TEST=run_webkit_tests http/tests/serviceworker/request.html
    
    Review URL: https://codereview.chromium.org/535193002
    
    git-svn-id: svn://svn.chromium.org/blink/trunk@181872 bbb929c8-8fbe-4397-9dbb-9b2b20218538
    3034deef
Body.cpp 5.71 KB