Steps to repro:
(1) Build GN to run mojo media app in the utility process, with "renderer" service and enable_test_mojo_media_client enabled.
use_goma = true
enable_mojo_media = true
mojo_media_host = "utility"
mojo_media_services = ["renderer"]
is_debug = true
enable_nacl = false
ffmpeg_branding = "ChromeOS"
proprietary_codecs = true
enable_test_mojo_media_client = true
(2) Build and launch Chrome
(3) Play HTML5 audio in one tab.
(4) Play HTML5 audio in a second tab.
Then I hit this crash:
[1:1:0624/132046:FATAL:audio_output_stream_sink.cc(30)] Check failed: !started_.
#0 0x7f9fa0aa24be base::debug::StackTrace::StackTrace()
#1 0x7f9fa0ae2ecf logging::LogMessage::~LogMessage()
#2 0x7f9f99d1ba1e media::AudioOutputStreamSink::Initialize()
#3 0x7f9fa5a76cc8 media::AudioRendererImpl::OnAudioBufferStreamInitialized()
#4 0x7f9f99a1780b _ZN4base8internal15RunnableAdapterIMN5media12PipelineImplEFvbEE3RunIRKNS_7WeakPtrIS3_EEJRKbEEEvOT_DpOT0_
#5 0x7f9f99a1773f _ZN4base8internal12InvokeHelperILb1EvE8MakeItSoIRNS0_15RunnableAdapterIMN5media12PipelineImplEFvbEEERKNS_7WeakPtrIS6_EEJRKbEEEvOT_OT0_DpOT1_
#6 0x7f9fa5a7c126 _ZN4base8internal7InvokerINS_13IndexSequenceIJLm0EEEENS0_9BindStateINS0_15RunnableAdapterIMN5media17AudioRendererImplEFvbEEEFvPS7_bEJNS_7WeakPtrIS7_EEEEELb1EFvbEE3RunEPNS0_13BindStateBaseEOb
#7 0x7f9f99195407 base::Callback<>::Run()
#8 0x7f9fa5a52ceb media::DecoderStream<>::OnDecoderSelected()
The reason is that all RendererServices running in the utility process share the same AudioOutputStreamSink[1], and it appears that AudioOutputStreamSink cannot be started twice.
[1] https://cs.chromium.org/chromium/src/media/mojo/services/test_mojo_media_client.cc?rcl=0&l=62
Comment 1 by xhw...@chromium.org
, Jun 24 2016