Bug 218807

Summary: REGRESSION (r269657): ASSERTION FAILED: Completion handler should always be called under WebKit::GPUProcessProxy::~GPUProcessProxy
Product: WebKit Reporter: Ryan Haddad <ryanhaddad>
Component: WebKit2Assignee: Chris Dumez <cdumez>
Status: RESOLVED FIXED    
Severity: Normal CC: cdumez, darin, eric.carlson, ggaren, jer.noble, sam, thorton, webkit-bot-watchers-bugzilla, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=218769
Attachments:
Description Flags
Patch
ews-feeder: commit-queue-
Patch none

Ryan Haddad
Reported 2020-11-11 09:15:40 PST
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
Attachments
Patch (3.84 KB, patch)
2020-11-11 09:26 PST, Chris Dumez
ews-feeder: commit-queue-
Patch (4.30 KB, patch)
2020-11-11 09:34 PST, Chris Dumez
no flags
Chris Dumez
Comment 1 2020-11-11 09:16:32 PST
Will investigate now, thanks.
Radar WebKit Bug Importer
Comment 2 2020-11-11 09:17:06 PST
Chris Dumez
Comment 3 2020-11-11 09:18:58 PST
In GPUProcessProxy: // ProcessThrottlerClient void sendPrepareToSuspend(IsSuspensionImminent, CompletionHandler<void()>&&) final { } The dummy implementation fails to call the CompletionHandler..
Chris Dumez
Comment 4 2020-11-11 09:19:58 PST
Will have a fix shortly.
Chris Dumez
Comment 5 2020-11-11 09:26:45 PST
Chris Dumez
Comment 6 2020-11-11 09:34:13 PST
Geoffrey Garen
Comment 7 2020-11-11 09:46:01 PST
Comment on attachment 413830 [details] Patch r=me
EWS
Comment 8 2020-11-11 10:44:11 PST
Committed r269690: <https://trac.webkit.org/changeset/269690> All reviewed patches have been landed. Closing bug and clearing flags on attachment 413830 [details].
Note You need to log in before you can comment on or make changes to this bug.