Summary: | [Curl] CurlRequestScheduler doesn't terminate worker thread in a certain situation. | ||||||
---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Takashi Komori <takashi.komori> | ||||
Component: | Platform | Assignee: | Nobody <webkit-unassigned> | ||||
Status: | RESOLVED FIXED | ||||||
Severity: | Normal | CC: | Basuke.Suzuki, commit-queue, don.olmstead, Hironori.Fujii, webkit-bug-importer | ||||
Priority: | P2 | Keywords: | InRadar | ||||
Version: | WebKit Nightly Build | ||||||
Hardware: | Unspecified | ||||||
OS: | Unspecified | ||||||
Attachments: |
|
Description
Takashi Komori
2019-06-19 00:31:09 PDT
Created attachment 372442 [details]
Patch
(In reply to Takashi Komori from comment #0) > When calling CurlRequest::didReceiveData task is not processed properly, a > paused connection could remain. Why can it remain? > In this case CurlRequestScheduler never releases the client related to it. Really? It seems that CurlRequestScheduler calls completeTransfer. Comment on attachment 372442 [details] Patch Clearing flags on attachment: 372442 Committed r246588: <https://trac.webkit.org/changeset/246588> All reviewed patches have been landed. Closing bug. (In reply to Fujii Hironori from comment #2) > (In reply to Takashi Komori from comment #0) > > When calling CurlRequest::didReceiveData task is not processed properly, a > > paused connection could remain. > > Why can it remain? > > > In this case CurlRequestScheduler never releases the client related to it. > > Really? It seems that CurlRequestScheduler calls completeTransfer. To be precise, the task added by didreceiveData is not processed properly. And when that task is not processed, the connection rmains paused. CurlRequest::didReceiveData (PAUSE) CurlRequest::invokeDidReceiveResponse | | (Add task by using callClient) | NetworkDataTaskCurl::curlDidReceiveResponse NetworkDataTaskCurl::invokeDidReceiveResponse CurlRequest::completeDidReceiveResponse (UNPAUSE) CrrlRequest::didCompleteTransfer In this case, paused connection won't return CURLMSG_DONE message and CurlRequestScheduler::completeTransfer will not be invoked. I got the idea. Thanks. |