AudioContextTest.AudioContextOptions_WebAudioLatencyHint fails on linux_chromium_tsan_rel_ng |
||||
Issue descriptionThis test fails 100% of the time on the linux_chromium_tsan_rel_ng try-bot. See the webkit_layout_tests failure in https://ci.chromium.org/buildbot/tryserver.chromium.linux/linux_chromium_tsan_rel_ng/210473, e.g: WARNING: ThreadSanitizer: data race (pid=3380) Write of size 1 at 0x7b1400039641 by main thread: #0 memmove /b/build/slave/linux_upload_clang/build/src/third_party/llvm/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:722:3 (webkit_unit_tests+0x15b6d5d) #1 move buildtools/third_party/libc++/trunk/include/__string:221:48 (libc++.so+0xef06f) #2 std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::assign(char const*, unsigned long) buildtools/third_party/libc++/trunk/include/string:1982 (libc++.so+0xef06f) #3 std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::operator=(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) buildtools/third_party/libc++/trunk/include/string:2042:9 (libc++.so+0xeef8e) #4 operator=<const std::__1::pair<const std::__1::basic_string<char>, std::__1::basic_string<char> > &, false> buildtools/third_party/libc++/trunk/include/utility:522:15 (webkit_unit_tests+0x56c3e8a) #5 operator= buildtools/third_party/libc++/trunk/include/map:629 (webkit_unit_tests+0x56c3e8a) #6 void std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::less<void>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >::__assign_multi<std::__1::__tree_const_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, void*>*, long> >(std::__1::__tree_const_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, void*>*, long>, std::__1::__tree_const_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, void*>*, long>) buildtools/third_party/libc++/trunk/include/__tree:1645 (webkit_unit_tests+0x56c3e8a) #7 operator= buildtools/third_party/libc++/trunk/include/__tree:1575:9 (webkit_unit_tests+0x56c165d) #8 operator= buildtools/third_party/libc++/trunk/include/map:912 (webkit_unit_tests+0x56c165d) #9 base::CommandLine::operator=(base::CommandLine const&) base/command_line.cc:179 (webkit_unit_tests+0x56c165d) #10 base::(anonymous namespace)::TestClientInitializer::OnTestEnd(testing::TestInfo const&) base/test/test_suite.cc:91:39 (webkit_unit_tests+0x8d3f9b5) #11 testing::internal::TestEventRepeater::OnTestEnd(testing::TestInfo const&) third_party/googletest/src/googletest/src/gtest.cc:3348:1 (webkit_unit_tests+0x2d050fe) #12 testing::TestInfo::Run() third_party/googletest/src/googletest/src/gtest.cc:2665:13 (webkit_unit_tests+0x2d00d49) #13 testing::TestCase::Run() third_party/googletest/src/googletest/src/gtest.cc:2772:28 (webkit_unit_tests+0x2d01466) #14 testing::internal::UnitTestImpl::RunAllTests() third_party/googletest/src/googletest/src/gtest.cc:4677:43 (webkit_unit_tests+0x2d0a886) #15 testing::UnitTest::Run() third_party/googletest/src/googletest/src/gtest.cc (webkit_unit_tests+0x2d0a285) #16 RUN_ALL_TESTS third_party/googletest/src/googletest/include/gtest/gtest.h:2237:46 (webkit_unit_tests+0x8d3e4e6) #17 base::TestSuite::Run() base/test/test_suite.cc:272 (webkit_unit_tests+0x8d3e4e6) #18 (anonymous namespace)::runHelper(base::TestSuite*) third_party/WebKit/Source/controller/tests/RunAllTests.cpp:48:27 (webkit_unit_tests+0x1614bce) #19 Invoke<base::TestSuite *> base/bind_internal.h:166:12 (webkit_unit_tests+0x1615244) #20 MakeItSo<int (*const &)(base::TestSuite *), base::TestSuite *> base/bind_internal.h:294 (webkit_unit_tests+0x1615244) #21 RunImpl<int (*const &)(base::TestSuite *), const std::__1::tuple<base::internal::UnretainedWrapper<base::TestSuite> > &, 0> base/bind_internal.h:368 (webkit_unit_tests+0x1615244) #22 base::internal::Invoker<base::internal::BindState<int (*)(base::TestSuite*), base::internal::UnretainedWrapper<base::TestSuite> >, int ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:350 (webkit_unit_tests+0x1615244) #23 Run base/callback.h:94:12 (webkit_unit_tests+0x8d41836) #24 base::(anonymous namespace)::LaunchUnitTestsInternal(base::RepeatingCallback<int ()> const&, unsigned long, int, bool, base::RepeatingCallback<void ()> const&) base/test/launcher/unit_test_launcher.cc:220 (webkit_unit_tests+0x8d41836) #25 base::LaunchUnitTests(int, char**, base::RepeatingCallback<int ()> const&) base/test/launcher/unit_test_launcher.cc:558:10 (webkit_unit_tests+0x8d41663) #26 main third_party/WebKit/Source/controller/tests/RunAllTests.cpp:70:10 (webkit_unit_tests+0x1614b45) Previous read of size 1 at 0x7b1400039641 by thread T14: [failed to restore the stack] Location is heap block of size 80 at 0x7b1400039620 allocated by main thread: #0 operator new(unsigned long) /b/build/slave/linux_upload_clang/build/src/third_party/llvm/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc:44:3 (webkit_unit_tests+0x1613ee9) #1 __allocate buildtools/third_party/libc++/trunk/include/new:226:10 (webkit_unit_tests+0x56c249f) #2 allocate buildtools/third_party/libc++/trunk/include/memory:1747 (webkit_unit_tests+0x56c249f) #3 allocate buildtools/third_party/libc++/trunk/include/memory:1502 (webkit_unit_tests+0x56c249f) #4 __construct_node<std::__1::pair<std::__1::basic_string<char>, std::__1::basic_string<char> > > buildtools/third_party/libc++/trunk/include/__tree:2191 (webkit_unit_tests+0x56c249f) #5 __emplace_unique_key_args<std::__1::basic_string<char>, std::__1::pair<std::__1::basic_string<char>, std::__1::basic_string<char> > > buildtools/third_party/libc++/trunk/include/__tree:2137 (webkit_unit_tests+0x56c249f) #6 __emplace_unique_extract_key<std::__1::pair<std::__1::basic_string<char>, std::__1::basic_string<char> > > buildtools/third_party/libc++/trunk/include/__tree:1214 (webkit_unit_tests+0x56c249f) #7 __emplace_unique<std::__1::pair<std::__1::basic_string<char>, std::__1::basic_string<char> > > buildtools/third_party/libc++/trunk/include/__tree:1176 (webkit_unit_tests+0x56c249f) #8 __insert_unique<std::__1::pair<std::__1::basic_string<char>, std::__1::basic_string<char> >, void> buildtools/third_party/libc++/trunk/include/__tree:1304 (webkit_unit_tests+0x56c249f) #9 insert<std::__1::pair<std::__1::basic_string<char>, std::__1::basic_string<char> >, void> buildtools/third_party/libc++/trunk/include/map:1054 (webkit_unit_tests+0x56c249f) #10 base::CommandLine::AppendSwitchNative(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) base/command_line.cc:332 (webkit_unit_tests+0x56c249f) #11 base::(anonymous namespace)::AppendSwitchesAndArguments(base::CommandLine*, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) base/command_line.cc:94:21 (webkit_unit_tests+0x56c1c94) #12 base::CommandLine::InitFromArgv(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) base/command_line.cc:262:3 (webkit_unit_tests+0x56c13a3) #13 base::CommandLine::InitFromArgv(int, char const* const*) base/command_line.cc:254:3 (webkit_unit_tests+0x56c111d) #14 base::CommandLine::Init(int, char const* const*) base/command_line.cc:216:33 (webkit_unit_tests+0x56c1849) #15 InitializeFromCommandLine base/test/test_suite.cc:165:31 (webkit_unit_tests+0x8d3e604) #16 base::TestSuite::TestSuite(int, char**) base/test/test_suite.cc:142 (webkit_unit_tests+0x8d3e604) #17 main third_party/WebKit/Source/controller/tests/RunAllTests.cpp:69:19 (webkit_unit_tests+0x1614ae1) Thread T14 (tid=3442, running) created by main thread at: #0 pthread_create /b/build/slave/linux_upload_clang/build/src/third_party/llvm/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:921:3 (webkit_unit_tests+0x15ad433) #1 base::(anonymous namespace)::CreateThread(unsigned long, bool, base::PlatformThread::Delegate*, base::PlatformThreadHandle*, base::ThreadPriority) base/threading/platform_thread_posix.cc:114:13 (webkit_unit_tests+0x576d9c6) #2 base::PlatformThread::CreateWithPriority(unsigned long, base::PlatformThread::Delegate*, base::PlatformThreadHandle*, base::ThreadPriority) base/threading/platform_thread_posix.cc:199:10 (webkit_unit_tests+0x576d885) #3 base::Thread::StartWithOptions(base::Thread::Options const&) base/threading/thread.cc:112:15 (webkit_unit_tests+0x5779489) #4 blink::scheduler::WebThreadImplForWorkerScheduler::WebThreadImplForWorkerScheduler(char const*, base::Thread::Options) third_party/WebKit/Source/platform/scheduler/child/webthread_impl_for_worker_scheduler.cc:30:27 (webkit_unit_tests+0x2c5ef93) #5 make_unique<blink::scheduler::WebThreadImplForWorkerScheduler, const char *&, base::Thread::Options &> buildtools/third_party/libc++/trunk/include/memory:3026:32 (webkit_unit_tests+0x2c5ec7c) #6 blink::scheduler::WebThreadBase::CreateWorkerThread(char const*, base::Thread::Options) third_party/WebKit/Source/platform/scheduler/child/webthread_base.cc:133 (webkit_unit_tests+0x2c5ec7c) #7 content::BlinkPlatformImpl::CreateThread(char const*) content/child/blink_platform_impl.cc:352:7 (webkit_unit_tests+0x936187d) #8 blink::(anonymous namespace)::AudioContextTestPlatform::CreateThread(char const*) third_party/WebKit/Source/modules/webaudio/AudioContextTest.cpp:78:27 (webkit_unit_tests+0x4f68842) #9 blink::WebThreadSupportingGC::WebThreadSupportingGC(char const*, blink::WebThread*) third_party/WebKit/Source/platform/WebThreadSupportingGC.cpp:38:43 (webkit_unit_tests+0x6566e48) #10 blink::WebThreadSupportingGC::CreateForThread(blink::WebThread*) third_party/WebKit/Source/platform/WebThreadSupportingGC.cpp:23:30 (webkit_unit_tests+0x6566ce9) #11 blink::WorkerBackingThread::WorkerBackingThread(blink::WebThread*, bool) third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp:67:23 (webkit_unit_tests+0x8439c36) #12 CreateForTest third_party/WebKit/Source/core/workers/WorkerBackingThread.h:42:32 (webkit_unit_tests+0x8b51e99) #13 blink::WorkletThreadHolder<blink::AudioWorkletThread>::CreateForTest(blink::WebThread*) third_party/WebKit/Source/core/workers/WorkletThreadHolder.h:60 (webkit_unit_tests+0x8b51e99) #14 blink::AudioWorkletThread::CreateSharedBackingThreadForTest() third_party/WebKit/Source/modules/webaudio/AudioWorkletThread.cpp:101:3 (webkit_unit_tests+0x8b52d45) #15 blink::AudioContextTest::SetUp() third_party/WebKit/Source/modules/webaudio/AudioContextTest.cpp:97:5 (webkit_unit_tests+0x4f67baf) #16 testing::Test::Run() third_party/googletest/src/googletest/src/gtest.cc (webkit_unit_tests+0x2cffce6) #17 testing::TestInfo::Run() third_party/googletest/src/googletest/src/gtest.cc:2654:11 (webkit_unit_tests+0x2d00c1d) #18 testing::TestCase::Run() third_party/googletest/src/googletest/src/gtest.cc:2772:28 (webkit_unit_tests+0x2d01466) #19 testing::internal::UnitTestImpl::RunAllTests() third_party/googletest/src/googletest/src/gtest.cc:4677:43 (webkit_unit_tests+0x2d0a886) #20 testing::UnitTest::Run() third_party/googletest/src/googletest/src/gtest.cc (webkit_unit_tests+0x2d0a285) #21 RUN_ALL_TESTS third_party/googletest/src/googletest/include/gtest/gtest.h:2237:46 (webkit_unit_tests+0x8d3e4e6) #22 base::TestSuite::Run() base/test/test_suite.cc:272 (webkit_unit_tests+0x8d3e4e6) #23 (anonymous namespace)::runHelper(base::TestSuite*) third_party/WebKit/Source/controller/tests/RunAllTests.cpp:48:27 (webkit_unit_tests+0x1614bce) #24 Invoke<base::TestSuite *> base/bind_internal.h:166:12 (webkit_unit_tests+0x1615244) #25 MakeItSo<int (*const &)(base::TestSuite *), base::TestSuite *> base/bind_internal.h:294 (webkit_unit_tests+0x1615244) #26 RunImpl<int (*const &)(base::TestSuite *), const std::__1::tuple<base::internal::UnretainedWrapper<base::TestSuite> > &, 0> base/bind_internal.h:368 (webkit_unit_tests+0x1615244) #27 base::internal::Invoker<base::internal::BindState<int (*)(base::TestSuite*), base::internal::UnretainedWrapper<base::TestSuite> >, int ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:350 (webkit_unit_tests+0x1615244) #28 Run base/callback.h:94:12 (webkit_unit_tests+0x8d41836) #29 base::(anonymous namespace)::LaunchUnitTestsInternal(base::RepeatingCallback<int ()> const&, unsigned long, int, bool, base::RepeatingCallback<void ()> const&) base/test/launcher/unit_test_launcher.cc:220 (webkit_unit_tests+0x8d41836) #30 base::LaunchUnitTests(int, char**, base::RepeatingCallback<int ()> const&) base/test/launcher/unit_test_launcher.cc:558:10 (webkit_unit_tests+0x8d41663) #31 main third_party/WebKit/Source/controller/tests/RunAllTests.cpp:70:10 (webkit_unit_tests+0x1614b45) SUMMARY: ThreadSanitizer: data race buildtools/third_party/libc++/trunk/include/__string:221:48 in move
,
Dec 5 2017
,
Dec 5 2017
If this test is really blocking CLs from going through the CQ then it should be disabled on TSAN immediately with an #ifdef.
,
Dec 5 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/0a1def1f52dfb09095d988cc40245102e9d362e1 commit 0a1def1f52dfb09095d988cc40245102e9d362e1 Author: Hongchan Choi <hongchan@chromium.org> Date: Tue Dec 05 22:38:08 2017 Remove AudioWorkletThread from AudioContextTest.cpp AudioContextTest.cpp tests the audio latency and is not involved any AudioWorklet operation. Removing AudioWorkletThread addresses the data race found in the bug. Locally confirmed that TSAN with this patch does not crash with the data race any more. Bug: 792140 Change-Id: I297533a176c42fb1af5025fdcd77a1cf4e68ee56 Reviewed-on: https://chromium-review.googlesource.com/809825 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Raymond Toy <rtoy@chromium.org> Commit-Queue: Hongchan Choi <hongchan@chromium.org> Cr-Commit-Position: refs/heads/master@{#521866} [modify] https://crrev.com/0a1def1f52dfb09095d988cc40245102e9d362e1/third_party/WebKit/Source/modules/webaudio/AudioContextTest.cpp
,
Dec 5 2017
I don't see failure any more: https://ci.chromium.org/buildbot/tryserver.chromium.linux/linux_chromium_tsan_rel_ng/211048 I am marking this as fixed and will monitor linux_chromium_tsan_rel_ng bot another 24 hours.
,
Dec 6 2017
Seems that all the AudioContext/AudioWorklet tests are passing now: https://ci.chromium.org/buildbot/tryserver.chromium.linux/linux_chromium_tsan_rel_ng/211692 |
||||
►
Sign in to add a comment |
||||
Comment 1 by w...@chromium.org
, Dec 5 2017Owner: hongchan@chromium.org
Status: Assigned (was: Untriaged)