Closed Bug 978827 Opened 6 years ago Closed 6 years ago

webrtc::OpenSlesInput::InitRecording(): assertion "!rec_initialized_" failed

Categories

(Core :: WebRTC: Audio/Video, defect)

ARM
Android
defect
Not set

Tracking

()

RESOLVED FIXED
mozilla30

People

(Reporter: gcp, Assigned: gcp)

Details

Attachments

(1 file)

DEBUG builds only.

Go to any gUM test page using audio, on an Android 2.3 or later device.

Start gUM test. Close webpage. Start gUM test again.

F/libc    (22368): /home/morbo/hg/mozilla-central/media/webrtc/trunk/webrtc/modules/audio_device/opensl/../android/opensles_input.cc:158: int32_t webrtc::OpenSlesInput::InitRecording(): assertion "!rec_initialized_" failed
F/libc    (22368): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 22728 (MediaManager)

It looks like upstream WebRTC.org code is assuming a different flow than we are. Have to check whether that assertion can go or we need to call Terminate on the audio backend more.
backtrace?
Flags: needinfo?(gpascutto)
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 25235]
0x4007b348 in ?? () from /home/morbo/git/android-gdb/moz-gdb/lib/00658c727e962a43/system/lib/libc.so
(gdb) bt
#0  0x4007b348 in ?? () from /home/morbo/git/android-gdb/moz-gdb/lib/00658c727e962a43/system/lib/libc.so
#1  0x40079514 in abort () from /home/morbo/git/android-gdb/moz-gdb/lib/00658c727e962a43/system/lib/libc.so
#2  0x4006f1d4 in ?? () from /home/morbo/git/android-gdb/moz-gdb/lib/00658c727e962a43/system/lib/libc.so
#3  0x4006e6e4 in __assert2 () from /home/morbo/git/android-gdb/moz-gdb/lib/00658c727e962a43/system/lib/libc.so
#4  0x7c2896b4 in webrtc::OpenSlesInput::InitRecording (
    this=0x7d527934 <webrtc::OpenSlesInput::InitRecording()::__PRETTY_FUNCTION__>)
    at /home/morbo/hg/mozilla-central/media/webrtc/trunk/webrtc/modules/audio_device/opensl/../android/opensles_input.cc:158
#5  0x7c28cc48 in webrtc::AudioDeviceAndroidOpenSLES::InitRecording (this=<optimized out>)
    at /home/morbo/hg/mozilla-central/media/webrtc/trunk/webrtc/modules/audio_device/opensl/../android/audio_device_opensles_android.cc:147
#6  0x7c28e566 in webrtc::AudioDeviceModuleImpl::InitRecording (this=0x8180b000)
    at /home/morbo/hg/mozilla-central/media/webrtc/trunk/webrtc/modules/audio_device/audio_device_impl.cc:1610
#7  0x7c2b8f30 in webrtc::VoEBaseImpl::StartSend (this=0x9e, this@entry=0x81eb10cc)
    at /home/morbo/hg/mozilla-central/media/webrtc/trunk/webrtc/voice_engine/voe_base_impl.cc:1037
#8  0x7c2b9038 in webrtc::VoEBaseImpl::StartSend (this=0x81eb10cc, channel=<optimized out>)
    at /home/morbo/hg/mozilla-central/media/webrtc/trunk/webrtc/voice_engine/voe_base_impl.cc:745
#9  0x7be90462 in mozilla::MediaEngineWebRTCAudioSource::Start (this=0x8185a820, aStream=0x9e, aID=2)
    at /home/morbo/hg/mozilla-central/content/media/webrtc/MediaEngineWebRTCAudio.cpp:183
#10 0x7baae75e in mozilla::MediaOperationRunnable::Run (this=0x84ba7400)
    at /home/morbo/hg/mozilla-central/dom/media/MediaManager.h:349
#11 0x7adc6616 in nsThread::ProcessNextEvent (this=0x887f3a00, mayWait=<optimized out>, result=<optimized out>)
    at /home/morbo/hg/mozilla-central/xpcom/threads/nsThread.cpp:643
#12 0x7ad685ee in NS_ProcessNextEvent (thread=<optimized out>, mayWait=<optimized out>)
    at /home/morbo/hg/mozilla-central/xpcom/glue/nsThreadUtils.cpp:263
#13 0x7b01e49c in mozilla::ipc::MessagePumpForNonMainThreads::Run (this=0x8797be50, aDelegate=0x86dc4cc0)
    at /home/morbo/hg/mozilla-central/ipc/glue/MessagePump.cpp:332
#14 0x7aff8304 in MessageLoop::RunInternal (this=this@entry=0x86dc4cc0)
    at /home/morbo/hg/mozilla-central/ipc/chromium/src/base/message_loop.cc:226
#15 0x7aff8312 in MessageLoop::RunHandler (this=this@entry=0x86dc4cc0)
    at /home/morbo/hg/mozilla-central/ipc/chromium/src/base/message_loop.cc:219
#16 0x7aff8350 in MessageLoop::Run (this=0x86dc4cc0)
    at /home/morbo/hg/mozilla-central/ipc/chromium/src/base/message_loop.cc:193
#17 0x7adc7bf2 in nsThread::ThreadFunc (arg=0x887f3a00) at /home/morbo/hg/mozilla-central/xpcom/threads/nsThread.cpp:258
#18 0x77926b64 in _pt_root (arg=0x887f3a80) at /home/morbo/hg/mozilla-central/nsprpub/pr/src/pthreads/ptthread.c:212
#19 0x40069a5c in __thread_entry () from /home/morbo/git/android-gdb/moz-gdb/lib/00658c727e962a43/system/lib/libc.so
#20 0x40069bd8 in pthread_create () from /home/morbo/git/android-gdb/moz-gdb/lib/00658c727e962a43/system/lib/libc.so
#21 0x00000000 in ?? ()
Flags: needinfo?(gpascutto)
So probably we're either not callling StopSend or the conditions here fail:
http://dxr.mozilla.org/mozilla-central/source/media/webrtc/trunk/webrtc/voice_engine/voe_base_impl.cc#1061
Uh actually StopRecording may be called. The only thing to unset rec_initialized is Terminate() which isn't called by StopSend at all.
Checked upstream: they removed this assertion so they probably reached the same conclusion.
Assignee: nobody → gpascutto
Attachment #8386732 - Flags: review?(rjesup)
Attachment #8386732 - Flags: review?(rjesup) → review+
https://hg.mozilla.org/mozilla-central/rev/f924832eff39
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla30
You need to log in before you can comment on or make changes to this bug.