Closed Bug 1009922 Opened 10 years ago Closed 6 years ago

[Open C] crash in __pthread_cond_pulse


(Core :: WebRTC, defect)

Gonk (Firefox OS)
Not set



tracking-b2g backlog
Tracking Status
b2g-v1.3 --- affected
b2g-v1.4 --- affected
b2g-v2.0 --- affected
b2g-v2.1 --- affected
backlog parking-lot


(Reporter: nhirata, Unassigned)




(Keywords: crash, reproducible, Whiteboard: [b2g-crash], permafail)

Crash Data

This bug was filed from the Socorro interface and is 
report bp-5a8bef14-1efe-43d1-9e86-6ee562140512.

Crashing Thread
Frame 	Module 	Signature 	Source
0 	__pthread_cond_pulse 	/home/duanxiaodong/8x10_AP_20140430/boot/bionic/libc/bionic/pthread.c
1 	android::AudioRecord::stop() 	/home/duanxiaodong/8x10_AP_20140430/boot/frameworks/native/include/utils/Condition.h
2 	android_audioRecorder_destroy(CAudioRecorder_struct*) 	/builds/slave/b2g_m-cen_flame_ntly-000000000/build/frameworks/wilhelm/src/android/AudioRecorder_to_android.cpp
3 	IObject_Destroy(SLObjectItf_ const* const*) 	/builds/slave/b2g_m-cen_flame_ntly-000000000/build/frameworks/wilhelm/src/itf/IObject.c
4 	webrtc::OpenSlesInput::DestroyAudioRecorder() 	media/webrtc/trunk/webrtc/modules/audio_device/android/
5 	webrtc::OpenSlesInput::StopRecording() 	media/webrtc/trunk/webrtc/modules/audio_device/android/
6 	webrtc::AudioDeviceModuleImpl::StopRecording() 	media/webrtc/trunk/webrtc/modules/audio_device/
7 	webrtc::VoEBaseImpl::StopSend() 	media/webrtc/trunk/webrtc/voice_engine/
8 	webrtc::VoEBaseImpl::StopSend(int) 	media/webrtc/trunk/webrtc/voice_engine/
9 	mozilla::MediaEngineWebRTCAudioSource::Stop(mozilla::SourceMediaStream*, int) 	content/media/webrtc/MediaEngineWebRTCAudio.cpp
10 	mozilla::MediaOperationRunnable::Run() 	dom/media/MediaManager.h
11 	nsThread::ProcessNextEvent(bool, bool*) 	xpcom/threads/nsThread.cpp
12 	NS_ProcessNextEvent(nsIThread*, bool) 	xpcom/glue/nsThreadUtils.cpp
13 	mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) 	ipc/glue/MessagePump.cpp
14 	MessageLoop::RunInternal() 	ipc/chromium/src/base/
15 	MessageLoop::Run() 	ipc/chromium/src/base/
16 	nsThread::ThreadFunc(void*) 	xpcom/threads/nsThread.cpp
17 	_pt_root 	nsprpub/pr/src/pthreads/ptthread.c
18 	__thread_entry 	/home/duanxiaodong/8x10_AP_20140430/boot/bionic/libc/bionic/pthread_create.cpp
19 	pthread_create 	/home/duanxiaodong/8x10_AP_20140430/boot/bionic/libc/bionic/pthread_create.cpp

More crashes :
Whiteboard: [b2g-crash]
Whiteboard: [b2g-crash] → [b2g-crash][2.0-flame-test-run-1]
Not sure if this is vendor-specific - let me send this over to the WebRTC component to get someone to double check.
Component: Vendcom → WebRTC
Product: Firefox OS → Core
Version: unspecified → Trunk
Rachel - How did you reproduce this?
Flags: needinfo?(rpribble)
It occurred a lot in our Flame v2.0 test run during Media Recording API test cases.

Repro steps:
1) Install the app from (packaged app used in test)
2) Select microphone > tap setup > grant permissions
3) Observe app crash

v2.0 Environmental Variables:
Device: Flame v2.0 MOZ ril
BuildID: 20140609040203
Gaia: 12af93123c5db55212d51fe235d39f21209a1eaa
Gecko: 9305a8ec77fe
Version: 32.0a1
Firmware Version: v10G-2
Flags: needinfo?(rpribble)
Using the STR described in comment 3, can we determine a reproduction rate?
blocking-b2g: --- → backlog
Keywords: qawanted
Repro rate: 10/10

A teammate and myself have seen a 100% crash rate when using these specific repro steps in the installed media app.
Keywords: qawanted
Flags: needinfo?(jmitchell)
Whiteboard: [b2g-crash][2.0-flame-test-run-1] → [b2g-crash][2.0-flame-test-run-1], [QAnalyst-Triage?]
QAWanted to check if this repros in 1.4
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(jmitchell)
Keywords: qawanted
Whiteboard: [b2g-crash][2.0-flame-test-run-1], [QAnalyst-Triage?] → [b2g-crash][2.0-flame-test-run-1]
QA Whiteboard: [QAnalyst-Triage?]
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(ktucker)
Whiteboard: [b2g-crash][2.0-flame-test-run-1] → [b2g-crash],[2.0-flame-test-run-1],[2.0-flame-test-run-2]
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(ktucker)
After running this test on Flame 2.1, Flame 2.0, Flame 1.4 and Flame base v121, I've been able to crash this process but not without some red flags.

From Comment 3, Running the Browser version by itself or the Packaged app by itself, I'm unable to produce a crash and the app runs smoothly.

However if 1 of the processes is already recording (Browser or Packaged) then the other version starts recording as well, a crash occurs immediately.

1. Is there another step/option that was set that I'm not aware of based on the info above?
2. Is it possible that what I've described (accidentally running multiple versions at the same time) could be what occurred?
3. If this is the case than is it valid?

Before I do a branch checks, it would be nice to have some more clarity on these questions.
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(nhirata.bugzilla)
QA Contact: croesch
Flags: needinfo?(jmitchell)
Here are the variables tested on

Environmental Variables:
Device: Flame Master
Build ID: 20140623053744
Gaia: bd5065ced020014df5fd45259fba1ac32d65673b
Gecko: 335b6610fe0c
Version: 33.0a1 (Master)
Firmware Version: v122
Environmental Variables:
Device: Flame 2.0
Build ID: 20140623051745
Gaia: 84ca0fe0a86d039f6d99cb562f52ef55045dee1d
Gecko: cef223bae66b
Version: 32.0a2 (2.0)
Firmware Version: v122
Environmental Variables:
Device: Flame 1.4
Build ID: 20140623000201
Gaia: 3419a1f68aaf64a0688685bce42d4173b6125597
Gecko: 34ecc9af3560
Version: 30.0 (1.4)
Firmware Version: v122
Environmental Variables:
Device: Flame 1.3
Build ID: 20140610200025
Gaia: e106a3f4a14eb8d4e10348efac7ae6dea2c24657
Gecko: b637b0677e15318dcce703f0358b397e09b018af
Version: 28.0 (1.3)
Firmware Version: v121-2
QA Whiteboard: [QAnalyst-Triage?]
jsmith, please see comment 7
Flags: needinfo?(nhirata.bugzilla) → needinfo?(jsmith)
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(ktucker)
Whiteboard: [b2g-crash],[2.0-flame-test-run-1],[2.0-flame-test-run-2] → permafail
Whiteboard: permafail → [b2g-crash],[2.0-flame-test-run-1],[2.0-flame-test-run-2]
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(ktucker)
Keywords: reproducible
I can't really follow the questions mentioned here. Can you rephrase?
Flags: needinfo?(jsmith) → needinfo?(croesch)
(In reply to Jason Smith [:jsmith] from comment #10)
> I can't really follow the questions mentioned here. Can you rephrase?

Basically I was asking if I may have not had all the information I needed to reproduce this crash in the manner described in Comment 3. The only crash I could reproduce was when I ran both the Browser version of the app and the Packaged version of the app at the same time. I asked if it's possible that this situation may have occured.

This is the website Rpibble listed that the crash occurred on. 

I was also wrong to NI Naoki as I was instructed to do. Apologies.
Flags: needinfo?(croesch)
As far as Psiphantong's comment about being able to repro this crash, he used a different website

I asked him to repro this bug for me today with the same setup he used before and he has been unable to produce a crash.

I've had multiple people try to reproduce his crash today and noone has been able to.
to note, this crashing has been occuring at least since build 20140604040204.
Though perhaps this was obvious, this is a b2g crash, not Android
OS: Android → Gonk (Firefox OS)
Hardware: All → ARM
This may be related to trying to use OpenSL from multiple processes (B2G apps) at once - gcp?  It seems deep inside the OpenSL/Android media code
Flags: needinfo?(gpascutto)
There's no reason why that shouldn't be be possible, save for Android OpenSLES bugs. We've hit some similar ones: bug 1020227. This needs to be debugged.
Flags: needinfo?(gpascutto)
Flags: needinfo?(jmitchell)
Blocks: 1004761
removing outdated qa-wanted tag
Keywords: qawanted
Josh - I'm not sure if the qawanted request here was addressed clearly, as I can't follow if we determined this is a regression or not. Can you get that information here?
Flags: needinfo?(jmitchell)
To my understanding, Comment 16 and comment 15 verify that " OpenSL from multiple processes (B2G apps) at once " SHOULD be a valid test which in turn verifies the information / branch checks from comment 8 indicating that this is NOT a regression
Flags: needinfo?(jmitchell)
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(dharris)
Whiteboard: [b2g-crash],[2.0-flame-test-run-1],[2.0-flame-test-run-2] → [b2g-crash], permafail
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(dharris)
QA Whiteboard: [QAnalyst-Triage+] → [QAnalyst-Triage+][lead-review+]
blocking-b2g: backlog → ---
backlog: --- → parking-lot
Closing because no crash reported since 12 weeks.
Closed: 6 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.