Bug 191781 - [PSON] ASSERTION FAILED: m_uncommittedState.state == State::Committed
Summary: [PSON] ASSERTION FAILED: m_uncommittedState.state == State::Committed
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit2 (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Chris Dumez
URL:
Keywords: InRadar
Depends on: 191795 191797
Blocks: 191761
  Show dependency treegraph
 
Reported: 2018-11-16 15:20 PST by Chris Dumez
Modified: 2019-01-24 13:46 PST (History)
10 users (show)

See Also:


Attachments
WIP Patch (16.53 KB, patch)
2018-11-16 22:44 PST, Chris Dumez
no flags Details | Formatted Diff | Diff
Patch (18.40 KB, patch)
2018-11-17 11:55 PST, Chris Dumez
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Chris Dumez 2018-11-16 15:20:26 PST
Some ProcessSwap API tests are crashing in debug since enabling process prewiring by default in r238294:
Crashed

    TestWebKitAPI.ProcessSwap.PageShowHide
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        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.
        ASSERTION FAILED: m_uncommittedState.state == State::Committed
        /Volumes/Data/slave/mojave-debug/build/Source/WebKit/UIProcess/PageLoadState.cpp(298) : void WebKit::PageLoadState::didFinishLoad(const Transaction::Token &)
        1   0x10ab2cb59 WTFCrash
        2   0x10f96095b WTFCrashWithInfo(int, char const*, char const*, int)
        3   0x11002d4dd WebKit::PageLoadState::didFinishLoad(WebKit::PageLoadState::Transaction::Token const&)
        4   0x11020a1bf WebKit::WebPageProxy::didFinishLoadForFrame(unsigned long long, unsigned long long, WebKit::UserData const&)
        5   0x110b2efee void IPC::callMemberFunctionImpl<WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WebKit::UserData const&), std::__1::tuple<unsigned long long, unsigned long long, WebKit::UserData>, 0ul, 1ul, 2ul>(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WebKit::UserData const&), std::__1::tuple<unsigned long long, unsigned long long, WebKit::UserData>&&, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul>)
        6   0x110b2ed10 void IPC::callMemberFunction<WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WebKit::UserData const&), std::__1::tuple<unsigned long long, unsigned long long, WebKit::UserData>, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul> >(std::__1::tuple<unsigned long long, unsigned long long, WebKit::UserData>&&, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WebKit::UserData const&))
        7   0x110b0b9ab void IPC::handleMessage<Messages::WebPageProxy::DidFinishLoadForFrame, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WebKit::UserData const&)>(IPC::Decoder&, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WebKit::UserData const&))
        8   0x110b00f18 WebKit::WebPageProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder&)
        9   0x10fa0fdca IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&, IPC::Decoder&)
        10  0x10ffecb84 WebKit::ChildProcessProxy::dispatchMessage(IPC::Connection&, IPC::Decoder&)
        11  0x1102e1e3a WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder&)
        12  0x10f9a7e5c IPC::Connection::dispatchMessage(IPC::Decoder&)
        13  0x10f99a241 IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)
        14  0x10f9a52b1 IPC::Connection::dispatchIncomingMessages()
        15  0x10f9c9ee6 IPC::Connection::MessagesThrottler::scheduleMessagesDispatch()::$_15::operator()()
        16  0x10f9c9dd9 WTF::Function<void ()>::CallableWrapper<IPC::Connection::MessagesThrottler::scheduleMessagesDispatch()::$_15>::call()
        17  0x10ab5445d WTF::Function<void ()>::operator()() const
        18  0x10abad1d3 WTF::RunLoop::performWork()
        19  0x10abadb64 WTF::RunLoop::performWork(void*)
        20  0x7fff32342f09 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
        21  0x7fff32342eaf __CFRunLoopDoSource0
        22  0x7fff32326d5c __CFRunLoopDoSources0
        23  0x7fff32326303 __CFRunLoopRun
        24  0x7fff32325be6 CFRunLoopRunSpecific
        25  0x7fff346aa3ba -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
        26  0x109d5ebc6 TestWebKitAPI::Util::run(bool*)
        27  0x109bca7ed ProcessSwap_PageShowHide_Test::TestBody()
        28  0x109f2234e void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*)
        29  0x109ec9d5b void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*)
        30  0x109ec9c86 testing::Test::Run()
        31  0x109ecb922 testing::TestInfo::Run()
        2018-11-16 14:18:27.331 com.apple.WebKit.WebContent.Development[94550:12325391] Application does not have the 'com.apple.security.network.client' entitlement.

    TestWebKitAPI.WKWebViewMacEditingTests.DoNotCrashWhenInterpretingKeyEventWhileDeallocatingView
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        ASSERTION FAILED: sendRightCount >= 1
        /Volumes/Data/slave/mojave-debug/build/Source/WebKit/UIProcess/Launcher/mac/ProcessLauncherMac.mm(251) : void WebKit::ProcessLauncher::launchProcess()_block_invoke
        1   0x10762fb59 WTFCrash
        2   0x10c7ee95b WTFCrashWithInfo(int, char const*, char const*, int)
        3   0x10d003875 invocation function for block in WebKit::ProcessLauncher::launchProcess()
        4   0x7fff5f7d69b1 _xpc_connection_reply_callout
        5   0x7fff5f7d6938 _xpc_connection_call_reply_async
        6   0x7fff5f552e39 _dispatch_client_callout3
        7   0x7fff5f5693b0 _dispatch_mach_msg_async_reply_invoke
        8   0x7fff5f55de25 _dispatch_main_queue_callback_4CF
        9   0x7fff32327051 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
        10  0x7fff32326763 __CFRunLoopRun
        11  0x7fff32325be6 CFRunLoopRunSpecific
        12  0x7fff346aa3ba -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
        13  0x106863bc6 TestWebKitAPI::Util::run(bool*)
        14  0x106979f55 WKWebViewMacEditingTests_DoNotCrashWhenInterpretingKeyEventWhileDeallocatingView_Test::TestBody()
        15  0x106a2734e void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*)
        16  0x1069ced5b void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*)
        17  0x1069cec86 testing::Test::Run()
        18  0x1069d0922 testing::TestInfo::Run()
        19  0x1069d1fac testing::TestCase::Run()
        20  0x1069eb315 testing::internal::UnitTestImpl::RunAllTests()
        21  0x106a2b54e bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*)
        22  0x1069ead3b bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*)
        23  0x1069eabfc testing::UnitTest::Run()
        24  0x1067b2251 RUN_ALL_TESTS()
        25  0x1067b21e4 TestWebKitAPI::TestsController::run(int, char**)
        26  0x10698927e main
        27  0x7fff5f5a108d start
        28  0x2

    TestWebKitAPI.ProcessSwap.NavigationWithLockedHistoryWithoutPSON
        _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.
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        ASSERTION FAILED: process->hasOneRef()
        /Volumes/Data/slave/mojave-debug/build/Source/WebKit/UIProcess/WebProcessPool.cpp(344) : virtual WebKit::WebProcessPool::~WebProcessPool()
        1   0x10cff1b59 WTFCrash
        2   0x11305395b WTFCrashWithInfo(int, char const*, char const*, int)
        3   0x1139b0441 WebKit::WebProcessPool::~WebProcessPool()
        4   0x1139b1d35 WebKit::WebProcessPool::~WebProcessPool()
        5   0x113647b8e -[WKProcessPool dealloc]
        6   0x113686cc6 WTF::RetainPtr<WKProcessPool>::~RetainPtr()
        7   0x113686c55 WTF::RetainPtr<WKProcessPool>::~RetainPtr()
        8   0x113686c39 LazyInitialized<WTF::RetainPtr<WKProcessPool> >::~LazyInitialized()
        9   0x11367bfd5 LazyInitialized<WTF::RetainPtr<WKProcessPool> >::~LazyInitialized()
        10  0x11367bebf -[WKWebViewConfiguration .cxx_destruct]
        11  0x7fff5e4d51f5 object_cxxDestructFromClass(objc_object*, objc_class*)
        12  0x7fff5e4cd9f0 objc_destructInstance
        13  0x7fff5e4cd992 object_dispose
        14  0x1136933f6 WTF::RetainPtr<WKWebViewConfiguration>::~RetainPtr()
        15  0x11366fdb5 WTF::RetainPtr<WKWebViewConfiguration>::~RetainPtr()
        16  0x11366fd48 -[WKWebView .cxx_destruct]
        17  0x7fff5e4d51f5 object_cxxDestructFromClass(objc_object*, objc_class*)
        18  0x7fff5e4cd9f0 objc_destructInstance
        19  0x7fff5e4cd992 object_dispose
        20  0x7fff2f970849 -[NSResponder dealloc]
        21  0x7fff2f96ebb4 -[NSView dealloc]
        22  0x113663e6e -[WKWebView dealloc]
        23  0x7fff5e4ce7c2 (anonymous namespace)::AutoreleasePoolPage::pop(void*)
        24  0x7fff322f8d42 _CFAutoreleasePoolPop
        25  0x7fff346c396e -[NSAutoreleasePool drain]
        26  0x10c34b297 main
        27  0x7fff5f5a108d start
        28  0x2

Testing completed, Exit status: 3
Comment 1 Chris Dumez 2018-11-16 20:27:14 PST
I managed to make the assertion a bit more likely to reproduce like so:
diff --git a/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm b/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm
index ff3fd087426..7f741e2b199 100644
--- a/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm
+++ b/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm
@@ -1969,6 +1969,10 @@ window.addEventListener('load', function(event) {
 
 TEST(ProcessSwap, LoadUnload)
 {
+    for (int i=0; i < 30; ++i) {
+    @autoreleasepool {
+    receivedMessages = adoptNS([@[] mutableCopy]);
+
     auto processPoolConfiguration = adoptNS([[_WKProcessPoolConfiguration alloc] init]);
     [processPoolConfiguration setProcessSwapsOnNavigation:YES];
     auto processPool = adoptNS([[WKProcessPool alloc] _initWithConfiguration:processPoolConfiguration.get()]);
@@ -2024,6 +2028,8 @@ TEST(ProcessSwap, LoadUnload)
     EXPECT_WK_STREQ(@"pson://www.webkit.org/main.html - load", receivedMessages.get()[4]);
     EXPECT_WK_STREQ(@"pson://www.webkit.org/main.html - unload", receivedMessages.get()[5]);
     EXPECT_WK_STREQ(@"pson://www.apple.com/main.html - load", receivedMessages.get()[6]);
+    }
+    }
 }

When it asserts the state is Finished instead of Committed.
Comment 2 Chris Dumez 2018-11-16 20:29:17 PST
(In reply to Chris Dumez from comment #1)
> I managed to make the assertion a bit more likely to reproduce like so:
> diff --git
> a/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm
> b/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm
> index ff3fd087426..7f741e2b199 100644
> --- a/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm
> +++ b/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm
> @@ -1969,6 +1969,10 @@ window.addEventListener('load', function(event) {
>  
>  TEST(ProcessSwap, LoadUnload)
>  {
> +    for (int i=0; i < 30; ++i) {
> +    @autoreleasepool {
> +    receivedMessages = adoptNS([@[] mutableCopy]);
> +
>      auto processPoolConfiguration = adoptNS([[_WKProcessPoolConfiguration
> alloc] init]);
>      [processPoolConfiguration setProcessSwapsOnNavigation:YES];
>      auto processPool = adoptNS([[WKProcessPool alloc]
> _initWithConfiguration:processPoolConfiguration.get()]);
> @@ -2024,6 +2028,8 @@ TEST(ProcessSwap, LoadUnload)
>      EXPECT_WK_STREQ(@"pson://www.webkit.org/main.html - load",
> receivedMessages.get()[4]);
>      EXPECT_WK_STREQ(@"pson://www.webkit.org/main.html - unload",
> receivedMessages.get()[5]);
>      EXPECT_WK_STREQ(@"pson://www.apple.com/main.html - load",
> receivedMessages.get()[6]);
> +    }
> +    }
>  }
> 
> When it asserts the state is Finished instead of Committed.

So it means that when didFinishLoad() is called, one of the following has already been called:
- didFinishLoad()
- reset()
- didFailProvisionalLoad()
- didFailLoad()
Comment 3 Chris Dumez 2018-11-16 20:47:41 PST
I have also seen this variant:
ASSERTION FAILED: m_uncommittedState.state == State::Provisional
        /Volumes/Data/WebKit/OpenSource/Source/WebKit/UIProcess/PageLoadState.cpp(285) : void WebKit::PageLoadState::didCommitLoad(const Transaction::Token &, WebKit::WebCertificateInfo &, bool)
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        1   0x107fa80d9 WTFCrash
        2   0x10cddf2fb WTFCrashWithInfo(int, char const*, char const*, int)
        3   0x10d4abcc8 WebKit::PageLoadState::didCommitLoad(WebKit::PageLoadState::Transaction::Token const&, WebKit::WebCertificateInfo&, bool)
        4   0x10d68a7b6 WebKit::WebPageProxy::didCommitLoadForFrame(unsigned long long, unsigned long long, WTF::String const&, bool, unsigned int, WebCore::CertificateInfo const&, bool, std::optional<WebCore::HasInsecureContent>, WebKit::UserData const&)
        5   0x10dfad143 void IPC::callMemberFunctionImpl<WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&, bool, unsigned int, WebCore::CertificateInfo const&, bool, std::optional<WebCore::HasInsecureContent>, WebKit::UserData const&), std::__1::tuple<unsigned long long, unsigned long long, WTF::String, bool, unsigned int, WebCore::CertificateInfo, bool, std::optional<WebCore::HasInsecureContent>, WebKit::UserData>, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul, 8ul>(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&, bool, unsigned int, WebCore::CertificateInfo const&, bool, std::optional<WebCore::HasInsecureContent>, WebKit::UserData const&), std::__1::tuple<unsigned long long, unsigned long long, WTF::String, bool, unsigned int, WebCore::CertificateInfo, bool, std::optional<WebCore::HasInsecureContent>, WebKit::UserData>&&, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul, 8ul>)
        6   0x10dfabc60 void IPC::callMemberFunction<WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&, bool, unsigned int, WebCore::CertificateInfo const&, bool, std::optional<WebCore::HasInsecureContent>, WebKit::UserData const&), std::__1::tuple<unsigned long long, unsigned long long, WTF::String, bool, unsigned int, WebCore::CertificateInfo, bool, std::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, std::optional<WebCore::HasInsecureContent>, WebKit::UserData>&&, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&, bool, unsigned int, WebCore::CertificateInfo const&, bool, std::optional<WebCore::HasInsecureContent>, WebKit::UserData const&))
        7   0x10df8a3e5 void IPC::handleMessage<Messages::WebPageProxy::DidCommitLoadForFrame, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&, bool, unsigned int, WebCore::CertificateInfo const&, bool, std::optional<WebCore::HasInsecureContent>, WebKit::UserData const&)>(IPC::Decoder&, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&, bool, unsigned int, WebCore::CertificateInfo const&, bool, std::optional<WebCore::HasInsecureContent>, WebKit::UserData const&))
        8   0x10df7fd16 WebKit::WebPageProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder&)
        9   0x10ce8ec0a IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&, IPC::Decoder&)
        10  0x10d46b2e4 WebKit::ChildProcessProxy::dispatchMessage(IPC::Connection&, IPC::Decoder&)
        11  0x10d76341a WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder&)
        12  0x10ce267cc IPC::Connection::dispatchMessage(IPC::Decoder&)
        13  0x10ce18bb1 IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)
        14  0x10ce23c21 IPC::Connection::dispatchIncomingMessages()
        15  0x10ce480b2 IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)::$_14::operator()()
        16  0x10ce47fd9 WTF::Function<void ()>::CallableWrapper<IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)::$_14>::call()
        17  0x107fcf87d WTF::Function<void ()>::operator()() const
        18  0x108028413 WTF::RunLoop::performWork()
        19  0x108028da4 WTF::RunLoop::performWork(void*)
        20  0x7fff4ed19195 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
        21  0x7fff4ed1913b __CFRunLoopDoSource0
        22  0x7fff4ecfcbd5 __CFRunLoopDoSources0
        23  0x7fff4ecfc17e __CFRunLoopRun
        24  0x7fff4ecfba68 CFRunLoopRunSpecific
        25  0x7fff511246ba -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
        26  0x1071d8736 TestWebKitAPI::Util::run(bool*)
        27  0x107045ab7 ProcessSwap_LoadUnload_Test::TestBody()
        28  0x10739fcfe void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*)
        29  0x1073477eb void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*)
        30  0x107347716 testing::Test::Run()
        31  0x1073493b2 testing::TestInfo::Run()
        LEAK: 1 WebPage
Comment 4 Ryosuke Niwa 2018-11-16 20:52:37 PST
I wonder if we're trying to load a new page while we're still pre-warming a process? e.g. right after we've committed a page load.
Comment 5 Chris Dumez 2018-11-16 21:27:55 PST
In happens in tests that use back/forward navigations, I suspect this is caused by:
1. Load origin A in P1
2. Load origin B in P2 (Process Swap)
-> Causes P1 to get navigated to about:blank for suspension
3. Navigate back before P1 has finished navigating to about:blank.

P1 tells the WebPageProxy didFinishLoad or didCommitLoad for 'about:blank', which it does not expect since it did not request that load.
Comment 6 Chris Dumez 2018-11-16 22:44:42 PST
Created attachment 355183 [details]
WIP Patch

Proof of concept.
Comment 7 Chris Dumez 2018-11-17 11:55:13 PST
Created attachment 355197 [details]
Patch
Comment 8 Chris Dumez 2018-11-17 14:07:03 PST
Comment on attachment 355197 [details]
Patch

Clearing flags on attachment: 355197

Committed r238353: <https://trac.webkit.org/changeset/238353>
Comment 9 Chris Dumez 2018-11-17 14:07:05 PST
All reviewed patches have been landed.  Closing bug.
Comment 10 Radar WebKit Bug Importer 2018-11-17 14:08:25 PST
<rdar://problem/46151872>
Comment 11 Ross Kirsling 2018-11-17 17:14:35 PST
WinCairo (the bots for which all suddenly disconnected this morning and haven't come back online 😰) has a broken build with the following error:

> FAILED: Source/WebKit/CMakeFiles/WebKit.dir/__/__/DerivedSources/WebKit/unified-sources/UnifiedSource25.cpp.obj
> ...
> C:\GitHub\neko\WebKitBuild\Release\DerivedSources\ForwardingHeaders\wtf/Ref.h(60): error C2039: 'deref': is not a member of 'WebKit::WebPageProxy::continueNavigationInNewProcess::<lambda_a497dfd3aa776334b389d665d3f26b45>'
> C:\GitHub\neko\Source\WebKit\UIProcess/WebPageProxy.cpp(2723): note: see declaration of 'WebKit::WebPageProxy::continueNavigationInNewProcess::<lambda_a497dfd3aa776334b389d665d3f26b45>'
> C:\GitHub\neko\WebKitBuild\Release\DerivedSources\ForwardingHeaders\wtf/Ref.h(54): note: while compiling class template member function 'WTF::Ref<WebKit::WebPageProxy::continueNavigationInNewProcess::<lambda_a497dfd3aa776334b389d665d3f26b45>,WTF::DumbPtrTraits<T>>::~Ref(void)'
>         with
>         [
>             T=WebKit::WebPageProxy::continueNavigationInNewProcess::<lambda_a497dfd3aa776334b389d665d3f26b45>
>         ]
> C:\GitHub\neko\Source\WebKit\UIProcess/WebPageProxy.cpp(2712): note: see reference to function template instantiation 'WTF::Ref<WebKit::WebPageProxy::continueNavigationInNewProcess::<lambda_a497dfd3aa776334b389d665d3f26b45>,WTF::DumbPtrTraits<T>>::~Ref(void)' being compiled
>         with
>         [
>             T=WebKit::WebPageProxy::continueNavigationInNewProcess::<lambda_a497dfd3aa776334b389d665d3f26b45>
>         ]
> C:\GitHub\neko\Source\WebKit\UIProcess/WebPageProxy.cpp(2700): note: see reference to class template instantiation 'WTF::Ref<WebKit::WebPageProxy::continueNavigationInNewProcess::<lambda_a497dfd3aa776334b389d665d3f26b45>,WTF::DumbPtrTraits<T>>' being compiled
>         with
>         [
>             T=WebKit::WebPageProxy::continueNavigationInNewProcess::<lambda_a497dfd3aa776334b389d665d3f26b45>
>         ]
> c:\github\neko\webkitbuild\release\derivedsources\forwardingheaders\javascriptcore\CodeBlock.h(950): note: see reference to class template instantiation 'WTF::Poisoned<JSC::CodeBlockPoison,JSC::VM *,void>' being compiled
Comment 12 Ryosuke Niwa 2018-11-17 17:33:20 PST
That looks like some kind of a compiler bug... I guess someone who has access to VS.net has to debug that.
Comment 13 Ross Kirsling 2018-11-17 17:55:08 PST
(In reply to Ryosuke Niwa from comment #12)
> That looks like some kind of a compiler bug... I guess someone who has
> access to VS.net has to debug that.

Thankfully, it looks like this issue has precedent.
https://trac.webkit.org/changeset/233195
https://trac.webkit.org/changeset/230162

Committed r238358: <https://trac.webkit.org/changeset/238358>