Seeing the following assertion failure on iOS Debug bots with various layout tests, as well as TestWebKitAPI.GPUProcess.RelaunchOnCrash ASSERTION FAILED: Completion handler should always be called !m_function /Volumes/Data/slave/ios-simulator-14-debug/build/WebKitBuild/Debug-iphonesimulator/usr/local/include/wtf/CompletionHandler.h(58) : WTF::CompletionHandler<void ()>::~CompletionHandler() 1 0x10765e3e9 WTFCrash 2 0x10f18a627 WTF::CompletionHandler<void ()>::~CompletionHandler() 3 0x10f187bd5 WTF::CompletionHandler<void ()>::~CompletionHandler() 4 0x10fff553f WebKit::ProcessThrottler::sendPrepareToSuspendIPC(WebKit::IsSuspensionImminent) 5 0x10fff41d9 WebKit::ProcessThrottler::updateAssertionIfNeeded() 6 0x10fff4332 WebKit::ProcessThrottler::removeActivity(WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1>&) 7 0x10fe3f7e8 WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1>::invalidate() 8 0x10fe3f652 WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1>::~Activity() 9 0x10fe3f5f5 WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1>::~Activity() 10 0x10fe3f5ab std::__1::default_delete<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1> >::operator()(WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1>*) const 11 0x10fe3f52f std::__1::unique_ptr<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1>, std::__1::default_delete<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1> > >::reset(WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1>*) 12 0x10fe3f4c9 std::__1::unique_ptr<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1>, std::__1::default_delete<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1> > >::~unique_ptr() 13 0x10fe3f4a5 std::__1::unique_ptr<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1>, std::__1::default_delete<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1> > >::~unique_ptr() 14 0x10fe3f485 WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1> >::~UniqueRef() 15 0x10fe3f465 WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1> >::~UniqueRef() 16 0x10fe3f42d WTF::__storage_wrapper<WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1> > >::__destroy() 17 0x10fe3f405 WTF::__variant_storage<WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1> >, false>::__destroy(WTF::__storage_wrapper<WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1> > >&) 18 0x10fe3f3dc WTF::__variant_data<WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1> > >::__destroy(WTF::in_place_tag (&)(WTF::__in_place_private::__value_holder<0ul>&)) 19 0x10fe3f3b3 void WTF::__variant_data<WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)0> >, WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1> > >::__destroy<1ul>(WTF::in_place_tag (&)(WTF::__in_place_private::__value_holder<1ul>&)) 20 0x10fe3f383 void WTF::__variant_data<std::nullptr_t, WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)0> >, WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1> > >::__destroy<2ul>(WTF::in_place_tag (&)(WTF::__in_place_private::__value_holder<2ul>&)) 21 0x10fe3f09d void WTF::__destroy_op_table<WTF::Variant<std::nullptr_t, WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)0> >, WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1> > >, WTF::__index_sequence<0l, 1l, 2l> >::__destroy_func<2l>(WTF::Variant<std::nullptr_t, WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)0> >, WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1> > >*) 22 0x10fe3ef95 WTF::Variant<std::nullptr_t, WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)0> >, WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1> > >::__destroy_self() 23 0x10fe3ef08 WTF::__variant_base<WTF::Variant<std::nullptr_t, WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)0> >, WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1> > >, false>::~__variant_base() 24 0x10fe3f878 WTF::Variant<std::nullptr_t, WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)0> >, WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1> > >::~Variant() 25 0x10fe340f5 WTF::Variant<std::nullptr_t, WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)0> >, WTF::UniqueRef<WebKit::ProcessThrottler::Activity<(WebKit::ProcessThrottler::ActivityType)1> > >::~Variant() 26 0x1104431c5 WebKit::GPUProcessProxy::~GPUProcessProxy() 27 0x110443295 WebKit::GPUProcessProxy::~GPUProcessProxy() 28 0x110255b1b std::__1::default_delete<WebKit::GPUProcessProxy>::operator()(WebKit::GPUProcessProxy*) const 29 0x110255ae2 WTF::RefCounted<WebKit::GPUProcessProxy, std::__1::default_delete<WebKit::GPUProcessProxy> >::deref() const 30 0x110255a67 WTF::DefaultRefDerefTraits<WebKit::GPUProcessProxy>::derefIfNotNull(WebKit::GPUProcessProxy*) 31 0x110255a29 WTF::RefPtr<WebKit::GPUProcessProxy, WTF::RawPtrTraits<WebKit::GPUProcessProxy>, WTF::DefaultRefDerefTraits<WebKit::GPUProcessProxy> >::~RefPtr() https://build.webkit.org/results/Apple-iOS-14-Simulator-Debug-WK2-Tests/r269657%20(619)/results.html https://build.webkit.org/builders/Apple-iOS-14-Simulator-Debug-WK2-Tests/builds/628/steps/run-api-tests/logs/stdio
Will investigate now, thanks.
<rdar://problem/71285627>
In GPUProcessProxy: // ProcessThrottlerClient void sendPrepareToSuspend(IsSuspensionImminent, CompletionHandler<void()>&&) final { } The dummy implementation fails to call the CompletionHandler..
Will have a fix shortly.
Created attachment 413828 [details] Patch
Created attachment 413830 [details] Patch
Comment on attachment 413830 [details] Patch r=me
Committed r269690: <https://trac.webkit.org/changeset/269690> All reviewed patches have been landed. Closing bug and clearing flags on attachment 413830 [details].