Bug 198866 - TestWebKitAPI.ProcessSwap.ReuseSuspendedProcessForRegularNavigation failing ASSERT NOT REACHED in WebKit::WebPageProxy::suspendCurrentPageIfPossible
Summary: TestWebKitAPI.ProcessSwap.ReuseSuspendedProcessForRegularNavigation failing A...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Tools / Tests (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2019-06-14 13:34 PDT by Ryan Haddad
Modified: 2020-03-12 09:50 PDT (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ryan Haddad 2019-06-14 13:34:19 PDT
I saw the following on a Mojave Debug bot:

    TestWebKitAPI.ProcessSwap.ReuseSuspendedProcessForRegularNavigation
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        Received data during response processing, queuing it.
        Received data during response processing, queuing it.
        Received data during response processing, queuing it.
        Received data during response processing, queuing it.
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        Received data during response processing, queuing it.
        Received data during response processing, queuing it.
        Received data during response processing, queuing it.
        Received data during response processing, queuing it.
        Received data during response processing, queuing it.
        SHOULD NEVER BE REACHED
        /Volumes/Data/slave/mojave-debug/build/Source/WebKit/UIProcess/WebPageProxy.cpp(760) : bool WebKit::WebPageProxy::suspendCurrentPageIfPossible(API::Navigation &, Optional<uint64_t>, WebKit::ProcessSwapRequestedByClient, WebKit::ShouldDelayClosingUntilEnteringAcceleratedCompositingMode)
        1   0x105b9be69 WTFCrash
        2   0x10bb92c2b WTFCrashWithInfo(int, char const*, char const*, int)
        3   0x10c680527 WebKit::WebPageProxy::suspendCurrentPageIfPossible(API::Navigation&, WTF::Optional<unsigned long long>, WebKit::ProcessSwapRequestedByClient, WebKit::ShouldDelayClosingUntilEnteringAcceleratedCompositingMode)
        4   0x10c692043 WebKit::WebPageProxy::commitProvisionalPage(unsigned long long, unsigned long long, WTF::String const&, bool, unsigned int, WebCore::CertificateInfo const&, bool, WTF::Optional<WebCore::HasInsecureContent>, WebKit::UserData const&)
        5   0x10c4e0bc3 WebKit::ProvisionalPageProxy::didCommitLoadForFrame(unsigned long long, unsigned long long, WTF::String const&, bool, unsigned int, WebCore::CertificateInfo const&, bool, WTF::Optional<WebCore::HasInsecureContent>, WebKit::UserData const&)
        6   0x10c51ca50 void IPC::callMemberFunctionImpl<WebKit::ProvisionalPageProxy, void (WebKit::ProvisionalPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&, bool, unsigned int, WebCore::CertificateInfo const&, bool, WTF::Optional<WebCore::HasInsecureContent>, WebKit::UserData const&), std::__1::tuple<unsigned long long, unsigned long long, WTF::String, bool, unsigned int, WebCore::CertificateInfo, bool, WTF::Optional<WebCore::HasInsecureContent>, WebKit::UserData>, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul, 8ul>(WebKit::ProvisionalPageProxy*, void (WebKit::ProvisionalPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&, bool, unsigned int, WebCore::CertificateInfo const&, bool, WTF::Optional<WebCore::HasInsecureContent>, WebKit::UserData const&), std::__1::tuple<unsigned long long, unsigned long long, WTF::String, bool, unsigned int, WebCore::CertificateInfo, bool, WTF::Optional<WebCore::HasInsecureContent>, WebKit::UserData>&&, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul, 8ul>)
        7   0x10c515200 void IPC::callMemberFunction<WebKit::ProvisionalPageProxy, void (WebKit::ProvisionalPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&, bool, unsigned int, WebCore::CertificateInfo const&, bool, WTF::Optional<WebCore::HasInsecureContent>, WebKit::UserData const&), std::__1::tuple<unsigned long long, unsigned long long, WTF::String, bool, unsigned int, WebCore::CertificateInfo, bool, WTF::Optional<WebCore::HasInsecureContent>, WebKit::UserData>, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul, 8ul> >(std::__1::tuple<unsigned long long, unsigned long long, WTF::String, bool, unsigned int, WebCore::CertificateInfo, bool, WTF::Optional<WebCore::HasInsecureContent>, WebKit::UserData>&&, WebKit::ProvisionalPageProxy*, void (WebKit::ProvisionalPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&, bool, unsigned int, WebCore::CertificateInfo const&, bool, WTF::Optional<WebCore::HasInsecureContent>, WebKit::UserData const&))
        8   0x10c4e383c void IPC::handleMessage<Messages::WebPageProxy::DidCommitLoadForFrame, WebKit::ProvisionalPageProxy, void (WebKit::ProvisionalPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&, bool, unsigned int, WebCore::CertificateInfo const&, bool, WTF::Optional<WebCore::HasInsecureContent>, WebKit::UserData const&)>(IPC::Decoder&, WebKit::ProvisionalPageProxy*, void (WebKit::ProvisionalPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&, bool, unsigned int, WebCore::CertificateInfo const&, bool, WTF::Optional<WebCore::HasInsecureContent>, WebKit::UserData const&))
        9   0x10c4e2437 WebKit::ProvisionalPageProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder&)
        10  0x10bc80619 IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&, IPC::Decoder&)
        11  0x10c4b2f04 WebKit::AuxiliaryProcessProxy::dispatchMessage(IPC::Connection&, IPC::Decoder&)
        12  0x10c78125a WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder&)
        13  0x10bc03b69 IPC::Connection::dispatchMessage(IPC::Decoder&)
        14  0x10bbfc4b2 IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        15  0x10bc0293b IPC::Connection::dispatchIncomingMessages()
        16  0x10bc25305 IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)::$_14::operator()()
        17  0x10bc25239 WTF::Detail::CallableWrapper<IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)::$_14, void>::call()
        18  0x105bc8c1a WTF::Function<void ()>::operator()() const
        19  0x105c33cb3 WTF::RunLoop::performWork()
        20  0x105c3506e WTF::RunLoop::performWork(void*)
        21  0x7fff4db1f083 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
        22  0x7fff4db1f029 __CFRunLoopDoSource0
        23  0x7fff4db029eb __CFRunLoopDoSources0
        24  0x7fff4db01fb5 __CFRunLoopRun
        25  0x7fff4db018be CFRunLoopRunSpecific
        26  0x7fff4fd658ef -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
        27  0x1032ac9b6 TestWebKitAPI::Util::run(bool*)
        28  0x1030f2480 testReuseSuspendedProcessForRegularNavigation(RetainPageInBundle)
        29  0x1030f2725 ProcessSwap_ReuseSuspendedProcessForRegularNavigation_Test::TestBody()
        30  0x10346468e void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*)
        31  0x103431d8b void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*)
        LEAK: 1 WebPage

https://build.webkit.org/builders/Apple%20Mojave%20Debug%20WK1%20(Tests)/builds/3959
Comment 1 Ryan Haddad 2019-06-14 13:37:13 PDT
From Source/WebKit/UIProcess/WebPageProxy.cpp:

    if (fromItem && fromItem->url() != pageLoadState().url()) {
        RELEASE_LOG_ERROR_IF_ALLOWED(ProcessSwapping, "suspendCurrentPageIfPossible: Not suspending current page for process pid %i because fromItem's URL does not match the page URL.", m_process->processIdentifier());
        ASSERT_NOT_REACHED();
        return false;
    }
Comment 2 Radar WebKit Bug Importer 2019-06-14 13:37:40 PDT
<rdar://problem/51760232>
Comment 3 Ryan Haddad 2019-06-14 13:47:42 PDT
This looks like it may be a flaky assertion failure.
Comment 4 Ryan Haddad 2019-06-19 09:45:13 PDT
Just saw this on High Sierra with API test ProcessSwap.ReuseSuspendedProcessForRegularNavigationRetainBundlePage

https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20WK2%20%28Tests%29/builds/8238/steps/run-api-tests/logs/stdio
Comment 5 Chris Dumez 2019-11-21 14:55:15 PST
I am having trouble reproducing, even running the API test in a loop. I also tried with GuardMalloc.
Comment 6 Chris Dumez 2020-03-12 09:50:49 PDT
http://trac.webkit.org/r258272