Bug 197426

Summary: Regression(PSON) URL scheme handlers can no longer respond asynchronously
Product: WebKit Reporter: Chris Dumez <cdumez>
Component: WebKit2Assignee: Chris Dumez <cdumez>
Status: RESOLVED FIXED    
Severity: Normal CC: achristensen, beidson, commit-queue, ggaren, sroberts, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
none
Patch none

Description Chris Dumez 2019-04-30 12:08:55 PDT
URL scheme handlers can no longer respond asynchronously or the task will be stopped before it gets a chance to finish.
Comment 1 Chris Dumez 2019-04-30 12:09:11 PDT
<rdar://problem/50256169>
Comment 2 Chris Dumez 2019-04-30 12:27:02 PDT
Created attachment 368587 [details]
Patch
Comment 3 Chris Dumez 2019-04-30 14:11:13 PDT
Comment on attachment 368587 [details]
Patch

Clearing flags on attachment: 368587

Committed r244802: <https://trac.webkit.org/changeset/244802>
Comment 4 Chris Dumez 2019-04-30 14:11:15 PDT
All reviewed patches have been landed.  Closing bug.
Comment 5 Shawn Roberts 2019-04-30 16:35:32 PDT
After changes in https://trac.webkit.org/changeset/244802

The following API test is crashing on Debug builds

TestWebKitAPI.URLSchemeHandler.Leaks2

ASSERTION FAILED: result.isNewEntry
        /Volumes/Data/slave/highsierra-debug/build/Source/WebKit/UIProcess/WebURLSchemeHandler.cpp(54) : void WebKit::WebURLSchemeHandler::startTask(WebKit::WebPageProxy &, WebKit::WebProcessProxy &, uint64_t, WebCore::ResourceRequest &&, WebKit::SyncLoadCompletionHandler &&)
        1   0x1034bede9 WTFCrash
        2   0x10899289b WTFCrashWithInfo(int, char const*, char const*, int)
        3   0x10957645a WebKit::WebURLSchemeHandler::startTask(WebKit::WebPageProxy&, WebKit::WebProcessProxy&, unsigned long long, WebCore::ResourceRequest&&, WTF::CompletionHandler<void (WebCore::ResourceResponse const&, WebCore::ResourceError const&, IPC::DataReference const&)>&&)
        4   0x1094a84a6 WebKit::WebPageProxy::startURLSchemeTaskShared(WTF::Ref<WebKit::WebProcessProxy, WTF::DumbPtrTraits<WebKit::WebProcessProxy> >&&, WebKit::URLSchemeTaskParameters&&)
        5   0x1094a8252 WebKit::WebPageProxy::startURLSchemeTask(WebKit::URLSchemeTaskParameters&&)
Comment 6 Chris Dumez 2019-04-30 16:37:56 PDT
(In reply to Shawn Roberts from comment #5)
> After changes in https://trac.webkit.org/changeset/244802
> 
> The following API test is crashing on Debug builds
> 
> TestWebKitAPI.URLSchemeHandler.Leaks2
> 
> ASSERTION FAILED: result.isNewEntry
>        
> /Volumes/Data/slave/highsierra-debug/build/Source/WebKit/UIProcess/
> WebURLSchemeHandler.cpp(54) : void
> WebKit::WebURLSchemeHandler::startTask(WebKit::WebPageProxy &,
> WebKit::WebProcessProxy &, uint64_t, WebCore::ResourceRequest &&,
> WebKit::SyncLoadCompletionHandler &&)
>         1   0x1034bede9 WTFCrash
>         2   0x10899289b WTFCrashWithInfo(int, char const*, char const*, int)
>         3   0x10957645a
> WebKit::WebURLSchemeHandler::startTask(WebKit::WebPageProxy&,
> WebKit::WebProcessProxy&, unsigned long long, WebCore::ResourceRequest&&,
> WTF::CompletionHandler<void (WebCore::ResourceResponse const&,
> WebCore::ResourceError const&, IPC::DataReference const&)>&&)
>         4   0x1094a84a6
> WebKit::WebPageProxy::startURLSchemeTaskShared(WTF::Ref<WebKit::
> WebProcessProxy, WTF::DumbPtrTraits<WebKit::WebProcessProxy> >&&,
> WebKit::URLSchemeTaskParameters&&)
>         5   0x1094a8252
> WebKit::WebPageProxy::startURLSchemeTask(WebKit::URLSchemeTaskParameters&&)

Looking now.
Comment 8 Chris Dumez 2019-04-30 16:42:31 PDT
    ASSERTION FAILED: result.isNewEntry
    /Volumes/Data/slave/highsierra-debug/build/Source/WebKit/UIProcess/WebURLSchemeHandler.cpp(54) : void WebKit::WebURLSchemeHandler::startTask(WebKit::WebPageProxy &, WebKit::WebProcessProxy &, uint64_t, WebCore::ResourceRequest &&, WebKit::SyncLoadCompletionHandler &&)
    1   0x1034bede9 WTFCrash
    2   0x10899289b WTFCrashWithInfo(int, char const*, char const*, int)
    3   0x10957645a WebKit::WebURLSchemeHandler::startTask(WebKit::WebPageProxy&, WebKit::WebProcessProxy&, unsigned long long, WebCore::ResourceRequest&&, WTF::CompletionHandler<void (WebCore::ResourceResponse const&, WebCore::ResourceError const&, IPC::DataReference const&)>&&)
    4   0x1094a84a6 WebKit::WebPageProxy::startURLSchemeTaskShared(WTF::Ref<WebKit::WebProcessProxy, WTF::DumbPtrTraits<WebKit::WebProcessProxy> >&&, WebKit::URLSchemeTaskParameters&&)
    5   0x1094a8252 WebKit::WebPageProxy::startURLSchemeTask(WebKit::URLSchemeTaskParameters&&)
    6   0x109f7d0aa void IPC::callMemberFunctionImpl<WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(WebKit::URLSchemeTaskParameters&&), std::__1::tuple<WebKit::URLSchemeTaskParameters>, 0ul>(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WebKit::URLSchemeTaskParameters&&), std::__1::tuple<WebKit::URLSchemeTaskParameters>&&, std::__1::integer_sequence<unsigned long, 0ul>)
    7   0x109f7d000 void IPC::callMemberFunction<WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(WebKit::URLSchemeTaskParameters&&), std::__1::tuple<WebKit::URLSchemeTaskParameters>, std::__1::integer_sequence<unsigned long, 0ul> >(std::__1::tuple<WebKit::URLSchemeTaskParameters>&&, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WebKit::URLSchemeTaskParameters&&))
    8   0x109ee9ebe void IPC::handleMessage<Messages::WebPageProxy::StartURLSchemeTask, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(WebKit::URLSchemeTaskParameters&&)>(IPC::Decoder&, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WebKit::URLSchemeTaskParameters&&))
    9   0x109eda7ba WebKit::WebPageProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder&)
    10  0x108a69aca IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&, IPC::Decoder&)
    11  0x109241954 WebKit::AuxiliaryProcessProxy::dispatchMessage(IPC::Connection&, IPC::Decoder&)
    12  0x10956c0da WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder&)
    13  0x1089f277c IPC::Connection::dispatchMessage(IPC::Decoder&)
    14  0x1089e48a1 IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)
    15  0x1089efbd1 IPC::Connection::dispatchIncomingMessages()
    16  0x108a146a2 IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)::$_14::operator()()
    17  0x108a145c9 WTF::Function<void ()>::CallableWrapper<IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)::$_14>::call()
    18  0x1034e95cd WTF::Function<void ()>::operator()() const
    19  0x10354bdb3 WTF::RunLoop::performWork()
    20  0x10354c744 WTF::RunLoop::performWork(void*)
    21  0x7fff514c7011 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
    22  0x7fff5157e8ec __CFRunLoopDoSource0
    23  0x7fff514a9fc0 __CFRunLoopDoSources0
    24  0x7fff514a943d __CFRunLoopRun
    25  0x7fff514a8c97 CFRunLoopRunSpecific
    26  0x7fff535c0e76 -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
    27  0x102333b62 TestWebKitAPI::Util::spinRunLoop(unsigned long long)
    28  0x10243adfa runUntilTasksInFlight(unsigned long)
    29  0x10243b39c URLSchemeHandler_Leaks2_Test::TestBody()
    30  0x1025158be void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*)
    31  0x1024bc7eb void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*)
TestWebKitAPI.URLSchemeHandler.Leaks2 Crashed
Comment 9 Chris Dumez 2019-04-30 16:50:43 PDT
Reopening due to API test failure.
Comment 10 Chris Dumez 2019-04-30 16:56:16 PDT
Reverted r244802 for reason:

Caused an API test failure

Committed r244812: <https://trac.webkit.org/changeset/244812>
Comment 11 Chris Dumez 2019-04-30 19:04:40 PDT
Created attachment 368646 [details]
Patch
Comment 12 WebKit Commit Bot 2019-04-30 19:45:16 PDT
Comment on attachment 368646 [details]
Patch

Clearing flags on attachment: 368646

Committed r244819: <https://trac.webkit.org/changeset/244819>
Comment 13 WebKit Commit Bot 2019-04-30 19:45:18 PDT
All reviewed patches have been landed.  Closing bug.