Bug 226247 - [iOS] ASSERTION FAILED: !isMainThread() in WebCore::SpeechRecognitionCaptureSourceImpl::audioSamplesAvailable
Summary: [iOS] ASSERTION FAILED: !isMainThread() in WebCore::SpeechRecognitionCaptureS...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Media (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Chris Dumez
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2021-05-25 16:06 PDT by Ryan Haddad
Modified: 2021-05-25 16:17 PDT (History)
5 users (show)

See Also:


Attachments
Patch (3.00 KB, patch)
2021-05-25 16:16 PDT, Chris Dumez
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Ryan Haddad 2021-05-25 16:06:06 PDT
Seeing the assert below on iOS simulator debug bots with a few speechrecognition layout tests

fast/speechrecognition/ios/audio-capture.html
fast/speechrecognition/ios/restart-recognition-after-stop.html
fast/speechrecognition/ios/start-recognition-then-stop.html


ASSERTION FAILED: !isMainThread()
./Modules/speech/SpeechRecognitionCaptureSourceImpl.cpp(131) : virtual void WebCore::SpeechRecognitionCaptureSourceImpl::audioSamplesAvailable(const WTF::MediaTime &, const WebCore::PlatformAudioData &, const WebCore::AudioStreamDescription &, size_t)
1   0x108496d99 WTFCrash
2   0x12af5a4eb WTFCrashWithInfo(int, char const*, char const*, int)
3   0x12d4541c2 WebCore::SpeechRecognitionCaptureSourceImpl::audioSamplesAvailable(WTF::MediaTime const&, WebCore::PlatformAudioData const&, WebCore::AudioStreamDescription const&, unsigned long)
4   0x12f563ce9 WebCore::RealtimeMediaSource::audioSamplesAvailable(WTF::MediaTime const&, WebCore::PlatformAudioData const&, WebCore::AudioStreamDescription const&, unsigned long)
5   0x111b72e8f WebKit::SpeechRecognitionRemoteRealtimeMediaSource::remoteAudioSamplesAvailable(WTF::MediaTime, unsigned long long)
6   0x111b73643 WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::remoteAudioSamplesAvailable(WTF::ObjectIdentifier<WebCore::RealtimeMediaSourceIdentifierType>, WTF::MediaTime const&, unsigned long long)
7   0x110fb4475 void IPC::callMemberFunctionImpl<WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager, void (WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::*)(WTF::ObjectIdentifier<WebCore::RealtimeMediaSourceIdentifierType>, WTF::MediaTime const&, unsigned long long), std::__1::tuple<WTF::ObjectIdentifier<WebCore::RealtimeMediaSourceIdentifierType>, WTF::MediaTime, unsigned long long>, 0ul, 1ul, 2ul>(WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager*, void (WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::*)(WTF::ObjectIdentifier<WebCore::RealtimeMediaSourceIdentifierType>, WTF::MediaTime const&, unsigned long long), std::__1::tuple<WTF::ObjectIdentifier<WebCore::RealtimeMediaSourceIdentifierType>, WTF::MediaTime, unsigned long long>&&, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul>)
8   0x110fb2e20 void IPC::callMemberFunction<WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager, void (WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::*)(WTF::ObjectIdentifier<WebCore::RealtimeMediaSourceIdentifierType>, WTF::MediaTime const&, unsigned long long), std::__1::tuple<WTF::ObjectIdentifier<WebCore::RealtimeMediaSourceIdentifierType>, WTF::MediaTime, unsigned long long>, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul> >(std::__1::tuple<WTF::ObjectIdentifier<WebCore::RealtimeMediaSourceIdentifierType>, WTF::MediaTime, unsigned long long>&&, WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager*, void (WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::*)(WTF::ObjectIdentifier<WebCore::RealtimeMediaSourceIdentifierType>, WTF::MediaTime const&, unsigned long long))
9   0x110fb2268 void IPC::handleMessage<Messages::SpeechRecognitionRemoteRealtimeMediaSourceManager::RemoteAudioSamplesAvailable, WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager, void (WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::*)(WTF::ObjectIdentifier<WebCore::RealtimeMediaSourceIdentifierType>, WTF::MediaTime const&, unsigned long long)>(IPC::Decoder&, WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager*, void (WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::*)(WTF::ObjectIdentifier<WebCore::RealtimeMediaSourceIdentifierType>, WTF::MediaTime const&, unsigned long long))
10  0x110fb2046 WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::didReceiveMessage(IPC::Connection&, IPC::Decoder&)
11  0x110d10304 IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&, IPC::Decoder&)
12  0x111ad3bde WebKit::AuxiliaryProcessProxy::dispatchMessage(IPC::Connection&, IPC::Decoder&)
13  0x111dc839f WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder&)
14  0x1107f14b4 IPC::Connection::dispatchMessage(IPC::Decoder&)
15  0x1107f1c9c IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)
16  0x1107f0410 IPC::Connection::dispatchIncomingMessages()
17  0x110813542 IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)::$_12::operator()()
18  0x11081344e WTF::Detail::CallableWrapper<IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)::$_12, void>::call()
19  0x1084c44e2 WTF::Function<void ()>::operator()() const
20  0x1085495e5 WTF::RunLoop::performWork()
21  0x10854dea1 WTF::RunLoop::performWork(void*)
22  0x1215feede __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
23  0x1215fedd6 __CFRunLoopDoSource0
24  0x1215fe29e __CFRunLoopDoSources0
25  0x1215f89f7 __CFRunLoopRun
26  0x1215f81a7 CFRunLoopRunSpecific
27  0x120dfe204 -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
28  0x105b9130e WTR::TestController::platformRunUntil(bool&, WTF::Seconds)
29  0x105b54baf WTR::TestController::runUntil(bool&, WTF::Seconds)
30  0x105b5ae95 WTR::TestController::statisticsResetToConsistentState()
31  0x105b59ee9 WTR::TestController::resetStateToConsistentValues(WTR::TestOptions const&, WTR::TestController::ResetStage)


https://results.webkit.org/?suite=layout-tests&suite=layout-tests&suite=layout-tests&test=fast%2Fspeechrecognition%2Fios%2Faudio-capture.html&test=fast%2Fspeechrecognition%2Fios%2Frestart-recognition-after-stop.html&test=fast%2Fspeechrecognition%2Fios%2Fstart-recognition-then-stop.html
Comment 1 Radar WebKit Bug Importer 2021-05-25 16:06:21 PDT
<rdar://problem/78481513>
Comment 2 Chris Dumez 2021-05-25 16:06:38 PDT
Looking now.
Comment 3 Chris Dumez 2021-05-25 16:07:48 PDT
It is a new assertion I added. I guess I was wrong about this function always running on the audio thread
Comment 4 Chris Dumez 2021-05-25 16:16:07 PDT
Created attachment 429708 [details]
Patch
Comment 5 Chris Dumez 2021-05-25 16:17:39 PDT
Comment on attachment 429708 [details]
Patch

Clearing flags on attachment: 429708

Committed r278056 (238140@main): <https://commits.webkit.org/238140@main>
Comment 6 Chris Dumez 2021-05-25 16:17:42 PDT
All reviewed patches have been landed.  Closing bug.