[Webkit-unassigned] [Bug 198993] New: [Curl] CurlRequestScheduler doesn't terminate worker thread in a certain situation.

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Jun 19 00:31:09 PDT 2019


https://bugs.webkit.org/show_bug.cgi?id=198993

            Bug ID: 198993
           Summary: [Curl] CurlRequestScheduler doesn't terminate worker
                    thread in a certain situation.
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Platform
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: Takashi.Komori at sony.com

When a CurlRequest receives didReceiveDataCallback from libcurl, it append a task for main thread by calling callClient.
If CurlRequest::invalidateClient is called before the task is processed, the task will not be processed properly.
This is because invalidateClient changes m_client to nullptr and the task appended by CurlRequest::callClient checks if m_client is null.

When calling CurlRequest::didReceiveData task is not processed properly, a paused connection could remain.
In this case CurlRequestScheduler never releases the client related to it.
Eventually this causes that CurlRequestScheduler's worker thread keeps working.

This CurlRequest::invalidateClient() is called from the destructor of NetworkDataTaskCurl.
To avoid this situation, we should cancel the request before invalidate.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20190619/dc5c524f/attachment.html>


More information about the webkit-unassigned mailing list