New issue
Advanced search Search tips

Issue 739338 link

Starred by 1 user

Issue metadata

Status: Duplicate
Merged: issue 736268
Owner:
Closed: Jul 2017
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 1
Type: Bug



Sign in to add a comment

AudioInputController flaky race on Linux TSAN trybot

Project Member Reported by guidou@chromium.org, Jul 5 2017

Issue description

See
https://luci-logdog.appspot.com/v/?s=chromium%2Fbb%2Ftryserver.chromium.linux%2Flinux_chromium_tsan_rel_ng%2F109325%2F%2B%2Frecipes%2Fsteps%2Fcontent_browsertests__with_patch_%2F0%2Flogs%2FWebRtcGetUserMediaBrowserTest.AudioInIFrameAndCloseInSuccessCb%2F0

Apparently there is a race with the timer in AudioInputController.

Sample logs:

WARNING: ThreadSanitizer: data race (pid=9991)
  Read of size 8 at 0x7b040000e840 by thread T19:
    #0 base::BaseTimerTaskInternal::Run() base/timer/timer.cc:40:10 (content_browsertests+0x350137a)
    #1 Invoke<base::BaseTimerTaskInternal *> base/bind_internal.h:209:12 (content_browsertests+0x3501705)
    #2 MakeItSo<void (base::BaseTimerTaskInternal::*)(), base::BaseTimerTaskInternal *> base/bind_internal.h:275 (content_browsertests+0x3501705)
    #3 RunImpl<void (base::BaseTimerTaskInternal::*)(), std::__1::tuple<base::internal::OwnedWrapper<base::BaseTimerTaskInternal> >, 0> base/bind_internal.h:351 (content_browsertests+0x3501705)
    #4 base::internal::Invoker<base::internal::BindState<void (base::BaseTimerTaskInternal::*)(), base::internal::OwnedWrapper<base::BaseTimerTaskInternal> >, void ()>::RunOnce(base::internal::BindStateBase*) base/bind_internal.h:316 (content_browsertests+0x3501705)
    #5 base::Callback<void (), (base::internal::CopyMode)0, (base::internal::RepeatMode)0>::Run() && base/callback.h:91:12 (content_browsertests+0x7c4f11)
    #6 base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) base/debug/task_annotator.cc:59:33 (content_browsertests+0x3556e00)
    #7 base::MessageLoop::RunTask(base::PendingTask*) base/message_loop/message_loop.cc:422:19 (content_browsertests+0x3477270)
    #8 base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) base/message_loop/message_loop.cc:433:5 (content_browsertests+0x3477b4b)
    #9 base::MessageLoop::DoDelayedWork(base::TimeTicks*) base/message_loop/message_loop.cc:580:10 (content_browsertests+0x3478400)
    #10 base::MessagePumpDefault::Run(base::MessagePump::Delegate*) base/message_loop/message_pump_default.cc:37:27 (content_browsertests+0x347c524)
    #11 base::MessageLoop::Run() base/message_loop/message_loop.cc:369:10 (content_browsertests+0x3476be3)
    #12 non-virtual thunk to base::MessageLoop::Run() base/message_loop/message_loop.cc (content_browsertests+0x3476c2d)
    #13 base::RunLoop::Run() base/run_loop.cc:111:14 (content_browsertests+0x34b5054)
    #14 base::Thread::Run(base::RunLoop*) base/threading/thread.cc:255:13 (content_browsertests+0x34fafab)
    #15 base::Thread::ThreadMain() base/threading/thread.cc:338:3 (content_browsertests+0x34fb741)
    #16 base::(anonymous namespace)::ThreadFunc(void*) base/threading/platform_thread_posix.cc:71:13 (content_browsertests+0x34eee18)
  Previous write of size 8 at 0x7b040000e840 by thread T17:
    #0 Abandon base/timer/timer.cc:54:27 (content_browsertests+0x350160c)
    #1 AbandonScheduledTask base/timer/timer.cc:224 (content_browsertests+0x350160c)
    #2 AbandonAndStop base/timer/timer.h:171 (content_browsertests+0x350160c)
    #3 base::Timer::~Timer() base/timer/timer.cc:103 (content_browsertests+0x350160c)
    #4 media::AudioInputController::~AudioInputController() media/audio/audio_input_controller.cc:204:1 (content_browsertests+0x1041074)
    #5 media::AudioInputController::~AudioInputController() media/audio/audio_input_controller.cc:200:47 (content_browsertests+0x1041129)
    #6 DeleteInternal base/memory/ref_counted.h:358:44 (content_browsertests+0x288d976)
    #7 Destruct base/memory/ref_counted.h:313 (content_browsertests+0x288d976)
    #8 Release base/memory/ref_counted.h:349 (content_browsertests+0x288d976)
    #9 Release base/memory/ref_counted.h:617 (content_browsertests+0x288d976)
    #10 ~scoped_refptr base/memory/ref_counted.h:512 (content_browsertests+0x288d976)
    #11 ~AudioEntry content/browser/renderer_host/media/audio_input_renderer_host.cc:88 (content_browsertests+0x288d976)
    #12 operator() buildtools/third_party/libc++/trunk/include/memory:2272 (content_browsertests+0x288d976)
    #13 reset buildtools/third_party/libc++/trunk/include/memory:2585 (content_browsertests+0x288d976)
    #14 ~unique_ptr buildtools/third_party/libc++/trunk/include/memory:2539 (content_browsertests+0x288d976)
    #15 content::AudioInputRendererHost::DeleteEntry(content::AudioInputRendererHost::AudioEntry*) content/browser/renderer_host/media/audio_input_renderer_host.cc:507 (content_browsertests+0x288d976)
    #16 Invoke<scoped_refptr<content::AudioInputRendererHost>, content::AudioInputRendererHost::AudioEntry *> base/bind_internal.h:209:12 (content_browsertests+0x288e776)
    #17 MakeItSo<void (content::AudioInputRendererHost::*)(content::AudioInputRendererHost::AudioEntry *), scoped_refptr<content::AudioInputRendererHost>, content::AudioInputRendererHost::AudioEntry *> base/bind_internal.h:275 (content_browsertests+0x288e776)
    #18 RunImpl<void (content::AudioInputRendererHost::*)(content::AudioInputRendererHost::AudioEntry *), std::__1::tuple<scoped_refptr<content::AudioInputRendererHost>, content::AudioInputRendererHost::AudioEntry *>, 0, 1> base/bind_internal.h:351 (content_browsertests+0x288e776)
    #19 base::internal::Invoker<base::internal::BindState<void (content::AudioInputRendererHost::*)(content::AudioInputRendererHost::AudioEntry*), scoped_refptr<content::AudioInputRendererHost>, content::AudioInputRendererHost::AudioEntry*>, void ()>::RunOnce(base::internal::BindStateBase*) base/bind_internal.h:316 (content_browsertests+0x288e776)
    #20 base::Callback<void (), (base::internal::CopyMode)0, (base::internal::RepeatMode)0>::Run() && base/callback.h:91:12 (content_browsertests+0x7c4f11)
    #21 base::(anonymous namespace)::PostTaskAndReplyRelay::RunReplyAndSelfDestruct() base/threading/post_task_and_reply_impl.cc:60:23 (content_browsertests+0x34ef45b)
    #22 Invoke<base::(anonymous namespace)::PostTaskAndReplyRelay *> base/bind_internal.h:209:12 (content_browsertests+0x34ef505)
    #23 MakeItSo<void (base::(anonymous namespace)::PostTaskAndReplyRelay::*)(), base::(anonymous namespace)::PostTaskAndReplyRelay *> base/bind_internal.h:275 (content_browsertests+0x34ef505)
    #24 RunImpl<void (base::(anonymous namespace)::PostTaskAndReplyRelay::*)(), std::__1::tuple<base::internal::UnretainedWrapper<base::(anonymous namespace)::PostTaskAndReplyRelay> >, 0> base/bind_internal.h:351 (content_browsertests+0x34ef505)
    #25 base::internal::Invoker<base::internal::BindState<void (base::(anonymous namespace)::PostTaskAndReplyRelay::*)(), base::internal::UnretainedWrapper<base::(anonymous namespace)::PostTaskAndReplyRelay> >, void ()>::RunOnce(base::internal::BindStateBase*) base/bind_internal.h:316 (content_browsertests+0x34ef505)
    #26 base::Callback<void (), (base::internal::CopyMode)0, (base::internal::RepeatMode)0>::Run() && base/callback.h:91:12 (content_browsertests+0x7c4f11)
    #27 base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) base/debug/task_annotator.cc:59:33 (content_browsertests+0x3556e00)
    #28 base::MessageLoop::RunTask(base::PendingTask*) base/message_loop/message_loop.cc:422:19 (content_browsertests+0x3477270)
    #29 base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) base/message_loop/message_loop.cc:433:5 (content_browsertests+0x3477b4b)
    #30 base::MessageLoop::DoWork() base/message_loop/message_loop.cc:540:13 (content_browsertests+0x34780af)
    #31 base::MessagePumpLibevent::Run(base::MessagePump::Delegate*) base/message_loop/message_pump_libevent.cc:219:31 (content_browsertests+0x347e6a0)
    #32 base::MessageLoop::Run() base/message_loop/message_loop.cc:369:10 (content_browsertests+0x3476be3)
    #33 non-virtual thunk to base::MessageLoop::Run() base/message_loop/message_loop.cc (content_browsertests+0x3476c2d)
    #34 base::RunLoop::Run() base/run_loop.cc:111:14 (content_browsertests+0x34b5054)
    #35 base::Thread::Run(base::RunLoop*) base/threading/thread.cc:255:13 (content_browsertests+0x34fafab)
    #36 content::BrowserThreadImpl::IOThreadRun(base::RunLoop*) content/browser/browser_thread_impl.cc:278:11 (content_browsertests+0x23ff75f)
    #37 content::BrowserThreadImpl::Run(base::RunLoop*) content/browser/browser_thread_impl.cc:313:14 (content_browsertests+0x23ff9d4)
    #38 base::Thread::ThreadMain() base/threading/thread.cc:338:3 (content_browsertests+0x34fb741)
    #39 base::(anonymous namespace)::ThreadFunc(void*) base/threading/platform_thread_posix.cc:71:13 (content_browsertests+0x34eee18)
  Location is heap block of size 8 at 0x7b040000e840 allocated by thread T19:
    #0 operator new(unsigned long) <null> (content_browsertests+0x532422)
    #1 base::Timer::PostNewScheduledTask(base::TimeDelta) base/timer/timer.cc:197:21 (content_browsertests+0x3500fc4)
    #2 base::Timer::Reset() base/timer/timer.cc (content_browsertests+0x3500716)
    #3 base::Timer::Start(tracked_objects::Location const&, base::TimeDelta, base::Callback<void (), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&) base/timer/timer.cc:137:3 (content_browsertests+0x3500e8d)
    #4 void base::BaseTimerMethodPointer::Start<media::AudioInputController>(tracked_objects::Location const&, base::TimeDelta, media::AudioInputController*, void (media::AudioInputController::*)()) base/timer/timer.h:250:12 (content_browsertests+0x104380d)
    #5 media::AudioInputController::DoCreateForStream(media::AudioInputStream*, bool) media/audio/audio_input_controller.cc:367:28 (content_browsertests+0x1042077)
    #6 media::AudioInputController::DoCreate(media::AudioManager*, media::AudioParameters const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool) media/audio/audio_input_controller.cc:325:3 (content_browsertests+0x10418ff)
    #7 Invoke<scoped_refptr<media::AudioInputController>, media::AudioManager *, media::AudioParameters, std::__1::basic_string<char>, bool> base/bind_internal.h:209:12 (content_browsertests+0x104562e)
    #8 MakeItSo<void (media::AudioInputController::*)(media::AudioManager *, const media::AudioParameters &, const std::__1::basic_string<char> &, bool), scoped_refptr<media::AudioInputController>, media::AudioManager *, media::AudioParameters, std::__1::basic_string<char>, bool> base/bind_internal.h:275 (content_browsertests+0x104562e)
    #9 RunImpl<void (media::AudioInputController::*)(media::AudioManager *, const media::AudioParameters &, const std::__1::basic_string<char> &, bool), std::__1::tuple<scoped_refptr<media::AudioInputController>, base::internal::UnretainedWrapper<media::AudioManager>, media::AudioParameters, std::__1::basic_string<char>, bool>, 0, 1, 2, 3, 4> base/bind_internal.h:351 (content_browsertests+0x104562e)
    #10 base::internal::Invoker<base::internal::BindState<void (media::AudioInputController::*)(media::AudioManager*, media::AudioParameters const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool), scoped_refptr<media::AudioInputController>, base::internal::UnretainedWrapper<media::AudioManager>, media::AudioParameters, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, bool>, void ()>::RunOnce(base::internal::BindStateBase*) base/bind_internal.h:316 (content_browsertests+0x104562e)
    #11 base::Callback<void (), (base::internal::CopyMode)0, (base::internal::RepeatMode)0>::Run() && base/callback.h:91:12 (content_browsertests+0x7c4f11)
    #12 base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) base/debug/task_annotator.cc:59:33 (content_browsertests+0x3556e00)
    #13 base::MessageLoop::RunTask(base::PendingTask*) base/message_loop/message_loop.cc:422:19 (content_browsertests+0x3477270)
    #14 base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) base/message_loop/message_loop.cc:433:5 (content_browsertests+0x3477b4b)
    #15 base::MessageLoop::DoWork() base/message_loop/message_loop.cc:540:13 (content_browsertests+0x34780af)
    #16 base::MessagePumpDefault::Run(base::MessagePump::Delegate*) base/message_loop/message_pump_default.cc:33:31 (content_browsertests+0x347c5b9)
    #17 base::MessageLoop::Run() base/message_loop/message_loop.cc:369:10 (content_browsertests+0x3476be3)
    #18 non-virtual thunk to base::MessageLoop::Run() base/message_loop/message_loop.cc (content_browsertests+0x3476c2d)
    #19 base::RunLoop::Run() base/run_loop.cc:111:14 (content_browsertests+0x34b5054)
    #20 base::Thread::Run(base::RunLoop*) base/threading/thread.cc:255:13 (content_browsertests+0x34fafab)
    #21 base::Thread::ThreadMain() base/threading/thread.cc:338:3 (content_browsertests+0x34fb741)
 
Labels: -Pri-3 Pri-1
Owner: ossu@chromium.org
Status: Assigned (was: Untriaged)
ossu@: Can you take a look?

I think this is related to the |check_muted_state_timer_| you added to AudioInputController in https://codereview.chromium.org/2919793002
Summary: AudioInputController flaky race on Linux TSAN trybot (was: WebRtcGetUserMediaBrowserTest.AudioInIFrameAndCloseInSuccessCb flaking on TSAN trybots)

Comment 4 by ossu@chromium.org, Jul 5 2017

I think this is the same as bug 736268. I was waiting on some feedback on a fix 
 over the long weekend and got some today. I'll try to get a CL up for it today.
Mergedinto: 736268
Status: Duplicate (was: Assigned)
Marking as duplicate.

Sign in to add a comment