Bug 226928 - REGRESSION: [ BigSur iOS wk1 Debug ] imported/w3c/web-platform-tests/html/dom/usvstring-reflection.https.html is flaky crashing
Summary: REGRESSION: [ BigSur iOS wk1 Debug ] imported/w3c/web-platform-tests/html/dom...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: DOM (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: youenn fablet
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2021-06-11 10:37 PDT by Truitt Savell
Modified: 2021-06-15 14:03 PDT (History)
6 users (show)

See Also:


Attachments
Patch (2.37 KB, patch)
2021-06-15 05:52 PDT, youenn fablet
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Truitt Savell 2021-06-11 10:37:30 PDT
imported/w3c/web-platform-tests/html/dom/usvstring-reflection.https.html

this test began crashing recently around r278704 on BigSur Debug wk1 queues and at least once on iOS debug

History:
https://results.webkit.org/?suite=layout-tests&test=imported/w3c/web-platform-tests/html/dom/usvstring-reflection.https.html

log:
(audio_processing_impl.cc:278): Injected APM submodules:
Echo control factory: 0
Echo detector: 0
Capture analyzer: 0
Capture post processor: 0
Render pre processor: 0
(webrtc_voice_engine.cc:268): WebRtcVoiceEngine::WebRtcVoiceEngine
(webrtc_video_engine.cc:628): WebRtcVideoEngine::WebRtcVideoEngine()
(webrtc_voice_engine.cc:290): WebRtcVoiceEngine::Init
Comment 1 Radar WebKit Bug Importer 2021-06-11 10:37:50 PDT
<rdar://problem/79205526>
Comment 2 Truitt Savell 2021-06-11 12:16:48 PDT
I have not been able to reproduce this failure locally yet
Comment 3 Chris Dumez 2021-06-11 14:27:42 PDT
Thread 35 Crashed:: rtc-low-prio
0   libwebrtc.dylib               	0x00000001234887c1 webrtc::(anonymous namespace)::TaskQueueStdlib::GetNextTask() + 257 (task_queue_stdlib.cc:193)
1   libwebrtc.dylib               	0x0000000123488583 webrtc::(anonymous namespace)::TaskQueueStdlib::ProcessTasks() + 51 (task_queue_stdlib.cc:226)
2   libwebrtc.dylib               	0x000000012348853f webrtc::(anonymous namespace)::TaskQueueStdlib::TaskQueueStdlib(std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadPriority)::$_1::operator()() const + 47 (task_queue_stdlib.cc:127)
3   libwebrtc.dylib               	0x00000001234884ed decltype(std::__1::forward<webrtc::(anonymous namespace)::TaskQueueStdlib::TaskQueueStdlib(std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadPriority)::$_1&>(fp)()) std::__1::__invoke<webrtc::(anonymous namespace)::TaskQueueStdlib::TaskQueueStdlib(std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadPriority)::$_1&>(webrtc::(anonymous namespace)::TaskQueueStdlib::TaskQueueStdlib(std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadPriority)::$_1&) + 29 (type_traits:3747)
4   libwebrtc.dylib               	0x000000012348849d void std::__1::__invoke_void_return_wrapper<void>::__call<webrtc::(anonymous namespace)::TaskQueueStdlib::TaskQueueStdlib(std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadPriority)::$_1&>(webrtc::(anonymous namespace)::TaskQueueStdlib::TaskQueueStdlib(std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadPriority)::$_1&) + 29 (__functional_base:348)
5   libwebrtc.dylib               	0x000000012348846d std::__1::__function::__alloc_func<webrtc::(anonymous namespace)::TaskQueueStdlib::TaskQueueStdlib(std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadPriority)::$_1, std::__1::allocator<webrtc::(anonymous namespace)::TaskQueueStdlib::TaskQueueStdlib(std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadPriority)::$_1>, void ()>::operator()() + 29 (functional:1553)
6   libwebrtc.dylib               	0x000000012348717e std::__1::__function::__func<webrtc::(anonymous namespace)::TaskQueueStdlib::TaskQueueStdlib(std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadPriority)::$_1, std::__1::allocator<webrtc::(anonymous namespace)::TaskQueueStdlib::TaskQueueStdlib(std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadPriority)::$_1>, void ()>::operator()() + 30 (functional:1727)
7   libwebrtc.dylib               	0x00000001223753f5 std::__1::__function::__value_func<void ()>::operator()() const + 53 (functional:1880)
8   libwebrtc.dylib               	0x0000000122375395 std::__1::function<void ()>::operator()() const + 21 (functional:2555)
9   libwebrtc.dylib               	0x0000000122cd0f26 rtc::PlatformThread::SpawnThread(std::__1::function<void ()>, std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadAttributes, bool)::$_1::operator()() const + 70 (platform_thread.cc:185)
10  libwebrtc.dylib               	0x0000000122cd0ebd decltype(std::__1::forward<rtc::PlatformThread::SpawnThread(std::__1::function<void ()>, std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadAttributes, bool)::$_1&>(fp)()) std::__1::__invoke<rtc::PlatformThread::SpawnThread(std::__1::function<void ()>, std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadAttributes, bool)::$_1&>(rtc::PlatformThread::SpawnThread(std::__1::function<void ()>, std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadAttributes, bool)::$_1&) + 29 (type_traits:3747)
11  libwebrtc.dylib               	0x0000000122cd0e6d void std::__1::__invoke_void_return_wrapper<void>::__call<rtc::PlatformThread::SpawnThread(std::__1::function<void ()>, std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadAttributes, bool)::$_1&>(rtc::PlatformThread::SpawnThread(std::__1::function<void ()>, std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadAttributes, bool)::$_1&) + 29 (__functional_base:348)
12  libwebrtc.dylib               	0x0000000122cd0e3d std::__1::__function::__alloc_func<rtc::PlatformThread::SpawnThread(std::__1::function<void ()>, std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadAttributes, bool)::$_1, std::__1::allocator<rtc::PlatformThread::SpawnThread(std::__1::function<void ()>, std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadAttributes, bool)::$_1>, void ()>::operator()() + 29 (functional:1553)
13  libwebrtc.dylib               	0x0000000122ccf9fe std::__1::__function::__func<rtc::PlatformThread::SpawnThread(std::__1::function<void ()>, std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadAttributes, bool)::$_1, std::__1::allocator<rtc::PlatformThread::SpawnThread(std::__1::function<void ()>, std::__1::basic_string_view<char, std::__1::char_traits<char> >, rtc::ThreadAttributes, bool)::$_1>, void ()>::operator()() + 30 (functional:1727)
14  libwebrtc.dylib               	0x00000001223753f5 std::__1::__function::__value_func<void ()>::operator()() const + 53 (functional:1880)
15  libwebrtc.dylib               	0x0000000122375395 std::__1::function<void ()>::operator()() const + 21 (functional:2555)
16  libwebrtc.dylib               	0x0000000122cceb8d rtc::(anonymous namespace)::RunPlatformThread(void*) + 29 (platform_thread.cc:101)
17  libsystem_pthread.dylib       	0x00007fff205db8fc 0x7fff205d5000 + 26876
18  libsystem_pthread.dylib       	0x00007fff205d7443 0x7fff205d5000 + 9283
Comment 4 Chris Dumez 2021-06-11 14:28:42 PDT
Potential regression from the WebRTC update in r278701.
Comment 5 youenn fablet 2021-06-15 05:52:10 PDT
Created attachment 431427 [details]
Patch
Comment 6 youenn fablet 2021-06-15 05:53:49 PDT
(In reply to Chris Dumez from comment #4)
> Potential regression from the WebRTC update in r278701.

It seems so.
From what I can see, it seems that we create a thread that will start before all the thread owner members are initialised.
Comment 7 Eric Carlson 2021-06-15 08:25:55 PDT
Comment on attachment 431427 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=431427&action=review

> Source/ThirdParty/libwebrtc/ChangeLog:12
> +        Update to create thread_ before all other members.

Don't you mean *after* all other members?
Comment 8 EWS 2021-06-15 11:22:05 PDT
Committed r278886 (238828@main): <https://commits.webkit.org/238828@main>

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431427 [details].
Comment 9 youenn fablet 2021-06-15 14:03:48 PDT
(In reply to Eric Carlson from comment #7)
> Comment on attachment 431427 [details]
> Patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=431427&action=review
> 
> > Source/ThirdParty/libwebrtc/ChangeLog:12
> > +        Update to create thread_ before all other members.
> 
> Don't you mean *after* all other members?

Right, will fix the changelog, thanks for the review and the cq+