Summary: | REGRESSION: [iOS release] http/tests/security/window-named-proto.html is a flaky timing out | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Jason Lawrence <Lawrence.j> | ||||||
Component: | WebKit Misc. | Assignee: | Jiewen Tan <jiewen_tan> | ||||||
Status: | RESOLVED FIXED | ||||||||
Severity: | Normal | CC: | achristensen, cdumez, commit-queue, ggaren, jiewen_tan, koivisto, rniwa, tsavell, webkit-bot-watchers-bugzilla, webkit-bug-importer | ||||||
Priority: | P2 | Keywords: | InRadar | ||||||
Version: | WebKit Nightly Build | ||||||||
Hardware: | Unspecified | ||||||||
OS: | Unspecified | ||||||||
Attachments: |
|
Description
Jason Lawrence
2020-01-23 10:06:43 PST
This is a highly intermittent timeout on iOS iOS Release When I increase history limit, I see even older timeouts, starting with r251319. It is pretty rare, so history doesn't point at the culprit, but this is sort of consistent with HTML event loop changes. Created attachment 389286 [details]
Patch
Created attachment 389288 [details]
Patch
Comment on attachment 389288 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=389288&action=review > Source/WebCore/platform/network/DataURLDecoder.cpp:46 > - static auto& queue = WorkQueue::create("org.webkit.DataURLDecoder").leakRef(); > + static auto& queue = WorkQueue::create("org.webkit.DataURLDecoder", WorkQueue::Type::Serial, WorkQueue::QOS::UserInitiated).leakRef(); Hm... what's the default QOS? I thought all threads we start will be at least user initiated by default? (In reply to Ryosuke Niwa from comment #6) > Comment on attachment 389288 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=389288&action=review > > > Source/WebCore/platform/network/DataURLDecoder.cpp:46 > > - static auto& queue = WorkQueue::create("org.webkit.DataURLDecoder").leakRef(); > > + static auto& queue = WorkQueue::create("org.webkit.DataURLDecoder", WorkQueue::Type::Serial, WorkQueue::QOS::UserInitiated).leakRef(); > > Hm... what's the default QOS? I thought all threads we start will be at > least user initiated by default? static Ref<WorkQueue> create(const char* name, Type = Type::Serial, QOS = QOS::Default); Comment on attachment 389288 [details]
Patch
Makes sense to use user-initiated IMO since this is the priority on the WebContent process' main thread and since this thread getting pre-empted would slow down a load, which would be visible to the user.
(In reply to Chris Dumez from comment #8) > Comment on attachment 389288 [details] > Patch > > Makes sense to use user-initiated IMO since this is the priority on the > WebContent process' main thread and since this thread getting pre-empted > would slow down a load, which would be visible to the user. FWIW, I'm pretty sure WebContent's main thread runs at user interactive QOS, which is slightly higher priority than user-initiated QOS. (In reply to Ryosuke Niwa from comment #9) > (In reply to Chris Dumez from comment #8) > > Comment on attachment 389288 [details] > > Patch > > > > Makes sense to use user-initiated IMO since this is the priority on the > > WebContent process' main thread and since this thread getting pre-empted > > would slow down a load, which would be visible to the user. > > FWIW, I'm pretty sure WebContent's main thread runs at user interactive QOS, > which is slightly higher priority than user-initiated QOS. Not 100% sure about that, would need to be validated on device to be sure. Either way, I do think that using user-initiated for data url is better than Default. I think it would be riskier to use UserInteractive. Comment on attachment 389288 [details]
Patch
Chris, thanks for r+ this patch.
Comment on attachment 389288 [details] Patch Clearing flags on attachment: 389288 Committed r255487: <https://trac.webkit.org/changeset/255487> All reviewed patches have been landed. Closing bug. |