Bug 228171 - REGRESSION: [iOS] ASSERTION FAILED: !m_useCount in WebKit::SandboxExtension::~SandboxExtension()
Summary: REGRESSION: [iOS] ASSERTION FAILED: !m_useCount in WebKit::SandboxExtension::...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Media (show other bugs)
Version: WebKit Nightly Build
Hardware: iPhone / iPad Unspecified
: P2 Normal
Assignee: Jer Noble
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2021-07-21 16:54 PDT by ayumi_kojima
Modified: 2021-07-26 17:02 PDT (History)
10 users (show)

See Also:


Attachments
Patch (3.17 KB, patch)
2021-07-26 14:11 PDT, Jer Noble
no flags Details | Formatted Diff | Diff
Patch (2.17 KB, patch)
2021-07-26 14:37 PDT, Jer Noble
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description ayumi_kojima 2021-07-21 16:54:35 PDT
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()
Comment 1 Radar WebKit Bug Importer 2021-07-21 16:54:57 PDT
<rdar://problem/80926509>
Comment 2 ayumi_kojima 2021-07-21 17:24:45 PDT
Updated test expectations https://trac.webkit.org/changeset/280169/webkit
Comment 3 Jer Noble 2021-07-26 14:11:51 PDT
Created attachment 434237 [details]
Patch
Comment 4 Darin Adler 2021-07-26 14:17:30 PDT
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.
Comment 5 Jer Noble 2021-07-26 14:29:32 PDT
(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!
Comment 6 Jer Noble 2021-07-26 14:37:15 PDT
Created attachment 434243 [details]
Patch
Comment 7 EWS 2021-07-26 17:02:37 PDT
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].