media/media-usage-state-private-browsing.html Is crashing on iOS 14 E Simulator wk2 Debug History: https://results.webkit.org/?suite=layout-tests&test=media%2Fmedia-usage-state-private-browsing.html It seems the crash started on around 6/8/21. I was not able to reproduce the crash on a simulator (iOS 15) on my local machine using run-webkit-tests --iterations 50 --exit-after-n-failures 2 --exit-after-n-crashes-or-timeouts 2 --debug --iphone-simulator -f media/media-usage-state-private-browsing.html The test timed out instead and it hanged with --no-timeout flag. Crash log: ASSERTION FAILED: !m_useCount /Volumes/Data/worker/ios-simulator-14-debug/build/Source/WebKit/Shared/Cocoa/SandboxExtensionCocoa.mm(452) : WebKit::SandboxExtension::~SandboxExtension() 1 0x123f4ba19 WTFCrash 2 0x1128e5e3b WTFCrashWithInfo(int, char const*, char const*, int) 3 0x11354de98 WebKit::SandboxExtension::~SandboxExtension() 4 0x11354df25 WebKit::SandboxExtension::~SandboxExtension() 5 0x112930eab std::__1::default_delete<WebKit::SandboxExtension>::operator()(WebKit::SandboxExtension*) const 6 0x112930e6c WTF::RefCounted<WebKit::SandboxExtension, std::__1::default_delete<WebKit::SandboxExtension> >::deref() const 7 0x112930e21 WTF::DefaultRefDerefTraits<WebKit::SandboxExtension>::derefIfNotNull(WebKit::SandboxExtension*) 8 0x112930de9 WTF::RefPtr<WebKit::SandboxExtension, WTF::RawPtrTraits<WebKit::SandboxExtension>, WTF::DefaultRefDerefTraits<WebKit::SandboxExtension> >::~RefPtr() 9 0x112930b15 WTF::RefPtr<WebKit::SandboxExtension, WTF::RawPtrTraits<WebKit::SandboxExtension>, WTF::DefaultRefDerefTraits<WebKit::SandboxExtension> >::~RefPtr() 10 0x1134c096c WebKit::RemoteMediaPlayerProxy::~RemoteMediaPlayerProxy() 11 0x1134c0d55 WebKit::RemoteMediaPlayerProxy::~RemoteMediaPlayerProxy() 12 0x1134da40b std::__1::default_delete<WebKit::RemoteMediaPlayerProxy>::operator()(WebKit::RemoteMediaPlayerProxy*) const 13 0x1134da38f std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> >::reset(WebKit::RemoteMediaPlayerProxy*) 14 0x1134da329 std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> >::~unique_ptr() 15 0x1134bef75 std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> >::~unique_ptr() 16 0x1134d044e WTF::KeyValuePair<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType>, std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> > >::~KeyValuePair() 17 0x1134d03b5 WTF::KeyValuePair<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType>, std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> > >::~KeyValuePair() 18 0x1134d02d1 WTF::HashTable<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType>, WTF::KeyValuePair<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType>, std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> > >, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType>, std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> > > >, WTF::DefaultHash<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType> >, WTF::HashMap<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType>, std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> >, WTF::DefaultHash<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType> >, WTF::HashTraits<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType> >, WTF::HashTraits<std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> > >, WTF::HashTableTraits>::KeyValuePairTraits, WTF::HashTraits<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType> > >::deallocateTable(WTF::KeyValuePair<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType>, std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> > >*) 19 0x1134d01a6 WTF::HashTable<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType>, WTF::KeyValuePair<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType>, std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> > >, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType>, std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> > > >, WTF::DefaultHash<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType> >, WTF::HashMap<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType>, std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> >, WTF::DefaultHash<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType> >, WTF::HashTraits<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType> >, WTF::HashTraits<std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> > >, WTF::HashTableTraits>::KeyValuePairTraits, WTF::HashTraits<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType> > >::~HashTable() 20 0x1134d0165 WTF::HashTable<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType>, WTF::KeyValuePair<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType>, std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> > >, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType>, std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> > > >, WTF::DefaultHash<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType> >, WTF::HashMap<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType>, std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> >, WTF::DefaultHash<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType> >, WTF::HashTraits<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType> >, WTF::HashTraits<std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> > >, WTF::HashTableTraits>::KeyValuePairTraits, WTF::HashTraits<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType> > >::~HashTable() 21 0x1134d0145 WTF::HashMap<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType>, std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> >, WTF::DefaultHash<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType> >, WTF::HashTraits<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType> >, WTF::HashTraits<std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> > >, WTF::HashTableTraits>::~HashMap() 22 0x1134beb85 WTF::HashMap<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType>, std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> >, WTF::DefaultHash<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType> >, WTF::HashTraits<WTF::ObjectIdentifier<WebCore::MediaPlayerIdentifierType> >, WTF::HashTraits<std::__1::unique_ptr<WebKit::RemoteMediaPlayerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerProxy> > >, WTF::HashTableTraits>::~HashMap() 23 0x1134beb59 WebKit::RemoteMediaPlayerManagerProxy::~RemoteMediaPlayerManagerProxy() 24 0x1134beba5 WebKit::RemoteMediaPlayerManagerProxy::~RemoteMediaPlayerManagerProxy() 25 0x1134bebcc WebKit::RemoteMediaPlayerManagerProxy::~RemoteMediaPlayerManagerProxy() 26 0x1133eb1bf std::__1::default_delete<WebKit::RemoteMediaPlayerManagerProxy>::operator()(WebKit::RemoteMediaPlayerManagerProxy*) const 27 0x1133eb13f std::__1::unique_ptr<WebKit::RemoteMediaPlayerManagerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerManagerProxy> >::reset(WebKit::RemoteMediaPlayerManagerProxy*) 28 0x1133eb0d9 std::__1::unique_ptr<WebKit::RemoteMediaPlayerManagerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerManagerProxy> >::~unique_ptr() 29 0x1133eb0b5 std::__1::unique_ptr<WebKit::RemoteMediaPlayerManagerProxy, std::__1::default_delete<WebKit::RemoteMediaPlayerManagerProxy> >::~unique_ptr() 30 0x1133eb095 WTF::UniqueRef<WebKit::RemoteMediaPlayerManagerProxy>::~UniqueRef() 31 0x1133d5485 WTF::UniqueRef<WebKit::RemoteMediaPlayerManagerProxy>::~UniqueRef()
<rdar://problem/80926509>
Updated test expectations https://trac.webkit.org/changeset/280169/webkit
Created attachment 434237 [details] Patch
Comment on attachment 434237 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=434237&action=review > Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:59 > + ProxyMap proxies; > + proxies.swap(m_proxies); This is old fashioned. New way to do it would be std::exchange instead.
(In reply to Darin Adler from comment #4) > Comment on attachment 434237 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=434237&action=review > > > Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:59 > > + ProxyMap proxies; > > + proxies.swap(m_proxies); > > This is old fashioned. New way to do it would be std::exchange instead. Fantastic, then it turns into an `auto` declaration, and I don't need the change to the header. Thanks!
Created attachment 434243 [details] Patch
Committed r280326 (239973@main): <https://commits.webkit.org/239973@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 434243 [details].