Bug 214383

Summary: [WinCairo][CURL] NetworkProcess consumes CPU resource greedily.
Product: WebKit Reporter: Takashi Komori <takashi.komori>
Component: PlatformAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: basuke, chris.reid, don.olmstead, Hironori.Fujii, stephan.szabo, takashi.komori, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=228095
Attachments:
Description Flags
Patch none

Takashi Komori
Reported 2020-07-15 16:38:32 PDT
When MiniBrowser for wincairo accesses a sites, it sometimes consumes CPU greedily. How to reproduce. 1) Access http://news.yahoo.co.jp/ with MiniBrowser for wincairo. 2) Reload the page. 3) Check task-manager, you will see NetworkProcess consumes much CPU resource.
Attachments
Patch (1.68 KB, patch)
2020-07-16 00:35 PDT, Takashi Komori
no flags
Takashi Komori
Comment 1 2020-07-16 00:12:19 PDT
The cause of this issue is that CurlRequestSchduler::workerThread doesn't stop/sleep at ::select. When WebKit gets response headers the CurlRequest makes the curl_easy_handle PAUSED. We do not have to check paused handles by ::select but they are watched. And if a handle is ready for read/write ::select goes through without any wait. This makes worker thread busy loop. The root cause is NetworkDataTaskCurl::invokeDidReceiveResponse() doesn't handle PolicyAction::Ignore properly, and active jobs in CurlRequestSceduler aren't removed until timeout. So we have to call invalidateAndCancel() when policy action is Ignore.
Takashi Komori
Comment 2 2020-07-16 00:35:23 PDT
EWS
Comment 3 2020-07-16 16:35:26 PDT
Committed r264485: <https://trac.webkit.org/changeset/264485> All reviewed patches have been landed. Closing bug and clearing flags on attachment 404427 [details].
Radar WebKit Bug Importer
Comment 4 2020-07-16 16:36:18 PDT
Note You need to log in before you can comment on or make changes to this bug.