Assert failure: blink::AudioWorklet::IsReady() |
|||
Issue descriptionUse an asan build, enable support for audio worklets, and run the test case from issue 780919 . Wait a long while and you'll get an assertion failure. The backtrace is: [47259:58029:0122/160932.393908:FATAL:AudioWorklet.cpp(62)] Check failed: IsMainThread(). #0 0x558bf9c68fa1 in __interceptor_backtrace /b/build/slave/linux_upload_clang/build/src/third_party/llvm/compiler-rt/lib/asan/../sanitizer_common/sanitizer_common_interceptors.inc:3867:13 #1 0x7fce78484c1c in base::debug::StackTrace::StackTrace(unsigned long) base/debug/stack_trace_posix.cc:808:41 #2 0x7fce78510c29 in logging::LogMessage::~LogMessage() base/logging.cc:581:29 #3 0x7fce50638716 in blink::AudioWorklet::IsReady() third_party/WebKit/Source/modules/webaudio/AudioWorklet.cpp:62:3 #4 0x7fce50702c5a in blink::OfflineAudioDestinationHandler::GetRenderingThread() third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp:365:63 #5 0x7fce50704229 in blink::OfflineAudioDestinationHandler::DoOfflineRendering() third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp:204:7 #6 0x7fce50703745 in blink::OfflineAudioDestinationHandler::StartOfflineRendering() third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp:187:3 #7 0x7fce50708643 in Invoke<const scoped_refptr<blink::OfflineAudioDestinationHandler> &> base/bind_internal.h:211:12 #8 0x7fce50708643 in MakeItSo<void (blink::OfflineAudioDestinationHandler::*const &)(), const scoped_refptr<blink::OfflineAudioDestinationHandler> &> base/bind_internal.h:294:0 #9 0x7fce50708643 in RunImpl<void (blink::OfflineAudioDestinationHandler::*const &)(), const std::__1::tuple<scoped_refptr<blink::OfflineAudioDestinationHandler> > &, 0> base/bind_internal.h:368:0 #10 0x7fce50708643 in base::internal::Invoker<base::internal::BindState<void (blink::OfflineAudioDestinationHandler::*)(), scoped_refptr<blink::OfflineAudioDestinationHandler> >, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:350:0 #11 0x7fce5242016e in Run base/callback.h:105:12 #12 0x7fce5242016e in Run third_party/WebKit/Source/platform/wtf/Functional.h:320:0 #13 0x7fce5242016e in blink::(anonymous namespace)::RunCrossThreadClosure(WTF::CrossThreadFunction<void ()>) third_party/WebKit/Source/platform/WebTaskRunner.cpp:35:0 #14 0x7fce52422846 in Invoke<WTF::CrossThreadFunction<void ()> > base/bind_internal.h:166:12 #15 0x7fce52422846 in MakeItSo<void (*)(WTF::CrossThreadFunction<void ()>), WTF::CrossThreadFunction<void ()> > base/bind_internal.h:294:0 #16 0x7fce52422846 in RunImpl<void (*)(WTF::CrossThreadFunction<void ()>), std::__1::tuple<WTF::CrossThreadFunction<void ()> >, 0> base/bind_internal.h:368:0 #17 0x7fce52422846 in base::internal::Invoker<base::internal::BindState<void (*)(WTF::CrossThreadFunction<void ()>), WTF::CrossThreadFunction<void ()> >, void ()>::RunOnce(base::internal::BindStateBase*) base/bind_internal.h:336:0 #18 0x7fce78488130 in Run base/callback.h:65:12 #19 0x7fce78488130 in base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) base/debug/task_annotator.cc:55:0 #20 0x7fce52f7706e in blink::scheduler::TaskQueueManager::ProcessTaskFromWorkQueue(blink::scheduler::internal::WorkQueue*, blink::scheduler::LazyNow, base::TimeTicks*) third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc:543:21 #21 0x7fce52f751b7 in blink::scheduler::TaskQueueManager::DoWork(blink::scheduler::internal::Sequence::WorkType) third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc:343:13 #22 0x7fce52f8730c in Invoke<const base::WeakPtr<blink::scheduler::TaskQueueManager> &, const blink::scheduler::internal::Sequence::WorkType &> base/bind_internal.h:211:12 #23 0x7fce52f8730c in MakeItSo<void (blink::scheduler::TaskQueueManager::*const &)(blink::scheduler::internal::Sequence::WorkType), const base::WeakPtr<blink::scheduler::TaskQueueManager> &, const blink::scheduler::internal::Sequence::WorkType &> base/bind_internal.h:314:0 #24 0x7fce52f8730c in RunImpl<void (blink::scheduler::TaskQueueManager::*const &)(blink::scheduler::internal::Sequence::WorkType), const std::__1::tuple<base::WeakPtr<blink::scheduler::TaskQueueManager>, blink::scheduler::internal::Sequence::WorkType> &, 0, 1> base/bind_internal.h:368:0 #25 0x7fce52f8730c in base::internal::Invoker<base::internal::BindState<void (blink::scheduler::TaskQueueManager::*)(blink::scheduler::internal::Sequence::WorkType), base::WeakPtr<blink::scheduler::TaskQueueManager>, blink::scheduler::internal::Sequence::WorkType>, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:350:0 #26 0x7fce78488130 in Run base/callback.h:65:12 #27 0x7fce78488130 in base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) base/debug/task_annotator.cc:55:0 #28 0x7fce52f8d854 in blink::scheduler::internal::ThreadControllerImpl::DoWork(blink::scheduler::internal::Sequence::WorkType) third_party/WebKit/Source/platform/scheduler/base/thread_controller_impl.cc:99:19 #29 0x7fce52f9017c in Invoke<const base::WeakPtr<blink::scheduler::internal::ThreadControllerImpl> &, const blink::scheduler::internal::Sequence::WorkType &> base/bind_internal.h:211:12 #30 0x7fce52f9017c in MakeItSo<void (blink::scheduler::internal::ThreadControllerImpl::*const &)(blink::scheduler::internal::Sequence::WorkType), const base::WeakPtr<blink::scheduler::internal::ThreadControllerImpl> &, const blink::scheduler::internal::Sequence::WorkType &> base/bind_internal.h:314:0 #31 0x7fce52f9017c in RunImpl<void (blink::scheduler::internal::ThreadControllerImpl::*const &)(blink::scheduler::internal::Sequence::WorkType), const std::__1::tuple<base::WeakPtr<blink::scheduler::internal::ThreadControllerImpl>, blink::scheduler::internal::Sequence::WorkType> &, 0, 1> base/bind_internal.h:368:0 #32 0x7fce52f9017c in base::internal::Invoker<base::internal::BindState<void (blink::scheduler::internal::ThreadControllerImpl::*)(blink::scheduler::internal::Sequence::WorkType), base::WeakPtr<blink::scheduler::internal::ThreadControllerImpl>, blink::scheduler::internal::Sequence::WorkType>, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:350:0 #33 0x7fce78488130 in Run base/callback.h:65:12 #34 0x7fce78488130 in base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) base/debug/task_annotator.cc:55:0 #35 0x7fce78534a42 in base::internal::IncomingTaskQueue::RunTask(base::PendingTask*) base/message_loop/incoming_task_queue.cc:124:19 #36 0x7fce7854385d in base::MessageLoop::RunTask(base::PendingTask*) base/message_loop/message_loop.cc:399:25 #37 0x7fce78544ad6 in base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) base/message_loop/message_loop.cc:411:5 #38 0x7fce78545451 in base::MessageLoop::DoWork() base/message_loop/message_loop.cc:455:16 #39 0x7fce7854c533 in base::MessagePumpDefault::Run(base::MessagePump::Delegate*) base/message_loop/message_pump_default.cc:37:31 #40 0x7fce78542175 in base::MessageLoop::Run(bool) base/message_loop/message_loop.cc:350:12 #41 0x7fce7860adbb in base::RunLoop::Run() base/run_loop.cc:130:14 #42 0x7fce786f78e5 in base::Thread::Run(base::RunLoop*) base/threading/thread.cc:255:13 #43 0x7fce786f8a50 in base::Thread::ThreadMain() base/threading/thread.cc:338:3 #44 0x7fce786d57d3 in base::(anonymous namespace)::ThreadFunc(void*) base/threading/platform_thread_posix.cc:75:13 #45 0x7fce4be28494 in start_thread ??:0:0 #46 0x7fce47a90a8f in clone ??:0:0
,
Jan 29 2018
,
Jan 29 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/6ff76d75878fb18ce6c731b985846f2fa8c718a1 commit 6ff76d75878fb18ce6c731b985846f2fa8c718a1 Author: Hongchan Choi <hongchan@chromium.org> Date: Mon Jan 29 20:34:08 2018 Do not access AudioWorklet::IsReady() from the audio thread AudioWorklet::IsReady() checks the state of the worklet object and must be accessed from the main thread. OfflineAudioDestinationHandler::DoOfflineRendering() violates the rule and this CL fixes GetRenderingThread() method to check the assigned worklet thread instead. Bug: 804908 Change-Id: I1ff1f779a3bb75d1715f521a2656a7c6c8c51a9f Reviewed-on: https://chromium-review.googlesource.com/882121 Reviewed-by: Raymond Toy <rtoy@chromium.org> Commit-Queue: Hongchan Choi <hongchan@chromium.org> Cr-Commit-Position: refs/heads/master@{#532571} [modify] https://crrev.com/6ff76d75878fb18ce6c731b985846f2fa8c718a1/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp
,
Jan 30 2018
|
|||
►
Sign in to add a comment |
|||
Comment 1 by rtoy@chromium.org
, Jan 23 2018