matrix-android-console
matrix-android-console copied to clipboard
Crashes and restarts on audio/video calls on some desices
Hello. Thank you for this great application!
Hope this will help to make it even greater and improve its compatibility with different crazy devices.
I have some Android devices, and one of them gives a crash when trying to perform audio or video call. It is likely libjingle audio recorder initialization issue:
W/AudioPolicyManagerBase( 145): getInput() could not find profile for device 100000, samplingRate 44100, format 1,channelMask 0010
E/AudioRecord(32506): Could not get audio input for record source 7
E/AudioRecord-JNI(32506): Error creating AudioRecord instance: initialization check failed.
After crash, application shows splash screen (likely restarts).
See a bit more logs below.
My device is HighScreen Boost 1G (rebranded Innos D9), having:
- Android 4.1.2, kernel 3.4.0
- Qualcomm 8625 1.4 GHz (ARM v7)
- 1GB RAM
More logs:
D/AudioTrackJni(32506): InitPlayout@[tid=338]
D/WebRtcAudioTrack(32506): InitPlayout(sampleRate=44100, channels=1)
D/WebRtcAudioTrack(32506): byteBuffer.capacity: 882
D/AudioTrackJni(32506): OnCacheDirectBufferAddress
D/AudioTrackJni(32506): direct buffer capacity: 882
D/AudioTrackJni(32506): frames_per_buffer: 441
D/WebRtcAudioTrack(32506): AudioTrack.getMinBufferSize: 4820
D/Retrofit(32506): ---> END HTTP (no body)
D/AudioManager(32506): IsCommunicationModeEnabled()
W/AudioDeviceTemplate(32506): The application should use MODE_IN_COMMUNICATION audio mode!
D/AudioTrackJni(32506): StartPlayout@[tid=338]
D/WebRtcAudioTrack(32506): StartPlayout
W/dalvikvm(32506): VFY: unable to resolve virtual method 1002: Landroid/media/AudioTrack;.write (Ljava/nio/ByteBuffer;II)I
D/Retrofit(32506): ---> END HTTP (no body)
D/WebRtcAudioTrack(32506): AudioTrackThread@[name=AudioTrackJavaThread, id=4549]
D/MXJingleCall(32506): mPeerConnection onSignalingChange STABLE
D/MXJingleCall(32506): mPeerConnection onAddStream [default:A=1:V=0]
D/MXJingleCall(32506): mPeerConnection onIceConnectionChange CHECKING
D/MXJingleCall(32506): setRemoteDescription onSetSuccess
D/HomeActivity(32506): onLiveEventsChunkProcessed
D/MXJingleCall(32506): mPeerConnection onIceConnectionChange CONNECTED
D/CallViewActivity(32506): onStateDidChange IMXCall.CALL_STATE_CONNECTED
D/CallViewActivity(32506): manageSubViews callState : IMXCall.CALL_STATE_CONNECTED
D/CallViewActivity(32506): stopRinging
E/AudioPolicyManager7627a( 145): make call in receiver
E/AudioPolicyManager7627a( 145): make call in receiver
E/AudioPolicyManager7627a( 145): make call in receiver
D/AudioRecordJni(32506): EnableBuiltInAEC@[tid=338]
D/WebRtcAudioRecord(32506): EnableBuiltInAEC(false)
W/AudioHardwareMSM76XXA( 145): rpc_snd_set_device(6, 0, 0)
W/AudioHardwareMSM76XXA( 145): rpc_snd_set_device(7, 6, 0, 0)
D/AudioRecordJni(32506): InitRecording@[tid=338]
D/WebRtcAudioRecord(32506): InitRecording(sampleRate=44100, channels=1)
D/WebRtcAudioRecord(32506): byteBuffer.capacity: 882
D/AudioRecordJni(32506): OnCacheDirectBufferAddress
D/AudioRecordJni(32506): direct buffer capacity: 882
D/WebRtcAudioRecord(32506): AudioRecord.getMinBufferSize: 4096
D/WebRtcAudioRecord(32506): bufferSizeInBytes: 4096
W/AudioPolicyManagerBase( 145): getInput() could not find profile for device 100000, samplingRate 44100, format 1,channelMask 0010
E/AudioRecord(32506): Could not get audio input for record source 7
E/AudioRecord-JNI(32506): Error creating AudioRecord instance: initialization check failed.
E/AudioRecord-Java(32506): [ android.media.AudioRecord ] Error code -20 when initializing native AudioRecord object.
W/System.err(32506): java.lang.AssertionError: Expected condition to be true
W/System.err(32506): at org.webrtc.voiceengine.WebRtcAudioRecord.assertTrue(WebRtcAudioRecord.java:266)
W/System.err(32506): at org.webrtc.voiceengine.WebRtcAudioRecord.InitRecording(WebRtcAudioRecord.java:186)
W/System.err(32506): at dalvik.system.NativeStart.run(Native Method)
E/rtc (32506):
E/rtc (32506):
E/rtc (32506): #
E/rtc (32506): # Fatal error in ../../webrtc/modules/utility/source/jvm_android.cc, line 117
E/rtc (32506): # Check failed: !jni_->ExceptionCheck()
E/rtc (32506): # Error during CallIntMethod
E/rtc (32506): #
F/libc (32506): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 338 (worker_thread)
E/AudioPolicyManager7627a( 145): make call in receiver
E/AudioPolicyManager7627a( 145): make call in receiver
E/AudioPolicyManager7627a( 145): make call in receiver
That's because 2 instances of webrtc::WebRtcAudioRecord were existed at the same time (maybe because 2 peer connections existed at the same time).