WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
227728
[ BigSur Debug ] TestWebKitAPI.GPUProcess.CrashWhilePlayingAudioViaCreateMediaElementSource is flaky, hitting ASSERTION FAILED: !isInRoutingArbitrationForToken(token)
https://bugs.webkit.org/show_bug.cgi?id=227728
Summary
[ BigSur Debug ] TestWebKitAPI.GPUProcess.CrashWhilePlayingAudioViaCreateMedi...
Eric Hutchison
Reported
2021-07-06 16:34:27 PDT
TestWebKitAPI.GPUProcess.CrashWhilePlayingAudioViaCreateMediaElementSource is flaky crashing. Reproduced crash locally on
r279579
,
r279582
,
r279300
. History:
https://results.webkit.org/?suite=api-tests&test=TestWebKitAPI.GPUProcess.CrashWhilePlayingAudioViaCreateMediaElementSource&platform=mac
Crashing with message: ASSERTION FAILED: !isInRoutingArbitrationForToken(token).
Attachments
Patch
(1.64 KB, patch)
2021-07-21 14:49 PDT
,
Peng Liu
no flags
Details
Formatted Diff
Diff
[fast-cq] Patch
(4.90 KB, patch)
2021-08-11 16:14 PDT
,
Peng Liu
no flags
Details
Formatted Diff
Diff
Show Obsolete
(1)
View All
Add attachment
proposed patch, testcase, etc.
Radar WebKit Bug Importer
Comment 1
2021-07-06 16:34:57 PDT
<
rdar://problem/80237464
>
Ryan Haddad
Comment 2
2021-07-06 16:46:42 PDT
TestWebKitAPI.GPUProcess.CrashWhilePlayingAudioViaCreateMediaElementSource ASSERTION FAILED: !isInRoutingArbitrationForToken(token) ./platform/audio/mac/SharedRoutingArbitrator.mm(55) : void WebCore::SharedRoutingArbitrator::beginRoutingArbitrationForToken(const WebCore::SharedRoutingArbitrator::Token &, AudioSession::CategoryType, WebCore::SharedRoutingArbitrator::ArbitrationCallback &&) 1 0x1057bc219 WTFCrash 2 0x121a2bebb WTFCrashWithInfo(int, char const*, char const*, int) 3 0x1236115f8 WebCore::SharedRoutingArbitrator::beginRoutingArbitrationForToken(WebCore::SharedRoutingArbitrator::Token const&, WebCore::AudioSession::CategoryType, WTF::CompletionHandler<void (WebCore::AudioSessionRoutingArbitrationClient::RoutingArbitrationError, WebCore::AudioSessionRoutingArbitrationClient::DefaultRouteChanged)>&&) 4 0x1116d7c19 WebKit::AudioSessionRoutingArbitratorProxy::beginRoutingArbitrationWithCategory(WebCore::AudioSession::CategoryType, WTF::CompletionHandler<void (WebCore::AudioSessionRoutingArbitrationClient::RoutingArbitrationError, WebCore::AudioSessionRoutingArbitrationClient::DefaultRouteChanged)>&&) 5 0x1101497f8 void IPC::callMemberFunctionImpl<WebKit::AudioSessionRoutingArbitratorProxy, void (WebKit::AudioSessionRoutingArbitratorProxy::*)(WebCore::AudioSession::CategoryType, WTF::CompletionHandler<void (WebCore::AudioSessionRoutingArbitrationClient::RoutingArbitrationError, WebCore::AudioSessionRoutingArbitrationClient::DefaultRouteChanged)>&&), void (WebCore::AudioSessionRoutingArbitrationClient::RoutingArbitrationError, WebCore::AudioSessionRoutingArbitrationClient::DefaultRouteChanged), std::__1::tuple<WebCore::AudioSession::CategoryType>, 0ul>(WebKit::AudioSessionRoutingArbitratorProxy*, void (WebKit::AudioSessionRoutingArbitratorProxy::*)(WebCore::AudioSession::CategoryType, WTF::CompletionHandler<void (WebCore::AudioSessionRoutingArbitrationClient::RoutingArbitrationError, WebCore::AudioSessionRoutingArbitrationClient::DefaultRouteChanged)>&&), WTF::CompletionHandler<void (WebCore::AudioSessionRoutingArbitrationClient::RoutingArbitrationError, WebCore::AudioSessionRoutingArbitrationClient::DefaultRouteChanged)>&&, std::__1::tuple<WebCore::AudioSession::CategoryType>&&, std::__1::integer_sequence<unsigned long, 0ul>) 6 0x1101471a5 void IPC::callMemberFunction<WebKit::AudioSessionRoutingArbitratorProxy, void (WebKit::AudioSessionRoutingArbitratorProxy::*)(WebCore::AudioSession::CategoryType, WTF::CompletionHandler<void (WebCore::AudioSessionRoutingArbitrationClient::RoutingArbitrationError, WebCore::AudioSessionRoutingArbitrationClient::DefaultRouteChanged)>&&), void (WebCore::AudioSessionRoutingArbitrationClient::RoutingArbitrationError, WebCore::AudioSessionRoutingArbitrationClient::DefaultRouteChanged), std::__1::tuple<WebCore::AudioSession::CategoryType>, std::__1::integer_sequence<unsigned long, 0ul> >(std::__1::tuple<WebCore::AudioSession::CategoryType>&&, WTF::CompletionHandler<void (WebCore::AudioSessionRoutingArbitrationClient::RoutingArbitrationError, WebCore::AudioSessionRoutingArbitrationClient::DefaultRouteChanged)>&&, WebKit::AudioSessionRoutingArbitratorProxy*, void (WebKit::AudioSessionRoutingArbitratorProxy::*)(WebCore::AudioSession::CategoryType, WTF::CompletionHandler<void (WebCore::AudioSessionRoutingArbitrationClient::RoutingArbitrationError, WebCore::AudioSessionRoutingArbitrationClient::DefaultRouteChanged)>&&)) 7 0x11014527e void IPC::handleMessageAsync<Messages::AudioSessionRoutingArbitratorProxy::BeginRoutingArbitrationWithCategory, WebKit::AudioSessionRoutingArbitratorProxy, void (WebKit::AudioSessionRoutingArbitratorProxy::*)(WebCore::AudioSession::CategoryType, WTF::CompletionHandler<void (WebCore::AudioSessionRoutingArbitrationClient::RoutingArbitrationError, WebCore::AudioSessionRoutingArbitrationClient::DefaultRouteChanged)>&&)>(IPC::Connection&, IPC::Decoder&, WebKit::AudioSessionRoutingArbitratorProxy*, void (WebKit::AudioSessionRoutingArbitratorProxy::*)(WebCore::AudioSession::CategoryType, WTF::CompletionHandler<void (WebCore::AudioSessionRoutingArbitrationClient::RoutingArbitrationError, WebCore::AudioSessionRoutingArbitrationClient::DefaultRouteChanged)>&&)) 8 0x110145047 WebKit::AudioSessionRoutingArbitratorProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder&)
https://build.webkit.org/#/builders/3/builds/3018/steps/12/logs/stdio
Peng Liu
Comment 3
2021-07-07 15:28:49 PDT
Currently, three processes are involved to begin routing arbitration. WebContent process: HTMLMediaElement changes state (canProduceAudioChanged) MediaSessionManagerCocoa sets the category of RemoteAudioSession, which sends an IPC message(RemoteAudioSessionProxy::SetCategory) to the GPU Process. GPU Process: 3. RemoteAudioSessionProxy starts the process to set the category of AudioSessionMac, which will call LocalAudioSessionRoutingArbitrator to send an IPC message (GPUProcessConnection::BeginRoutingArbitrationWithCategory) to the WebContent process. WebContent Process: 4. Send an IPC message (AudioSessionRoutingArbitratorProxy::BeginRoutingArbitrationWithCategory) to the UI process. UI Process: 5. Call SharedRoutingArbitrator::beginRoutingArbitrationWithCategoryForToken(). After the GPU Process crashes, WebContent Process: 6. Reload and resume the media playback. This will lead to the state change in step 1, after that step 2, 3, 4, 5 will run again. UI Process: 7. Clean up routing arbitrator by calling SharedRoutingArbitrator::endRoutingArbitrationForToken(). Normally, step 6 and 7 happen almost at the same time (in different processes). Step 7 will be done before steps 1, 2, 3, 4, and 5 which are triggered by step 6. However, that is not guaranteed. If step 7 is delayed for some reason, step 5 will crash with an assertion failure.
Alexey Proskuryakov
Comment 4
2021-07-12 19:45:04 PDT
This keeps happening super frequently, roughly half of the time. Seems like the test should be removed if it cannot be fixed soon.
Peng Liu
Comment 5
2021-07-12 20:21:43 PDT
(In reply to Alexey Proskuryakov from
comment #4
)
> This keeps happening super frequently, roughly half of the time. Seems like > the test should be removed if it cannot be fixed soon.
Agree. I think it is a good idea to disable the test for now.
Peng Liu
Comment 6
2021-07-21 14:49:11 PDT
Created
attachment 433960
[details]
Patch
EWS
Comment 7
2021-07-22 10:29:06 PDT
Committed
r280180
(
239874@main
): <
https://commits.webkit.org/239874@main
> All reviewed patches have been landed. Closing bug and clearing flags on
attachment 433960
[details]
.
Peng Liu
Comment 8
2021-07-22 10:30:03 PDT
Reopen this bug because the issue is not resolved.
Eric Carlson
Comment 9
2021-08-11 13:39:08 PDT
***
Bug 229010
has been marked as a duplicate of this bug. ***
Peng Liu
Comment 10
2021-08-11 14:58:02 PDT
As far as I know, the following two tests are affected: TestWebKitAPI.WebKit2.CrashGPUProcessWhileCapturing TestWebKitAPI.GPUProcess.CrashWhilePlayingAudioViaCreateMediaElementSource
Peng Liu
Comment 11
2021-08-11 16:14:33 PDT
Created
attachment 435382
[details]
[fast-cq] Patch
Peng Liu
Comment 12
2021-08-11 18:09:45 PDT
Comment on
attachment 435382
[details]
[fast-cq] Patch The test failures are not relevant to this patch.
EWS
Comment 13
2021-08-11 18:11:24 PDT
Committed
r280951
(
240457@main
): <
https://commits.webkit.org/240457@main
> All reviewed patches have been landed. Closing bug and clearing flags on
attachment 435382
[details]
.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug