Android version(s): 6, 7 mostly
Android device(s): Huawei devices exclusively
Oboe version: 1.10
App name used for testing: None
(Please try to reproduce the issue using the OboeTester or an Oboe sample.)
Short description
We are running into this crash and there are a couple of different paths leading up to this crash (always ending in enqueueCallbackBuffer).
- Record path:
SIGSEGV
libaudioclient.so 0X7697103500 android::sp<android::AudioIoDescriptor>::operator=(android::sp<android::AudioIoDescriptor> const&) (+0x30) + 0x7f500
libaudioclient.so 0X7697101324 android::AudioSystem::AudioFlingerClient::getIoDescriptor_l(int) (+0x114) + 0x7d324
libaudioclient.so 0X7697103AC4 android::AudioSystem::getIoDescriptor(int) [clone .cfi] (+0x84) + 0x7fac4
libaudioclient.so 0X76971178A0 android::AudioSystem::getDeviceIdForIo(int) [clone .cfi] (+0x40) + 0x938a0
libaudioclient.so 0X7697142CF4 android::AudioTrack::getRoutedDeviceId() (+0x84) + 0xbecf4
libwilhelm.so 0X769746E9FC android_audioPlayer_bufferQueue_onRefilled_l(CAudioPlayer_struct*) (+0x1c) + 0x209fc
libwilhelm.so 0X7697469824 handler_AudioPlayer_bq_enqueue (+0x14) + 0x1b824
libwilhelm.so 0X7697469ED8 object_unlock_exclusive_attributes_(Object_interface*, unsigned int, char const*, int) (+0xd8) + 0x1bed8
libwilhelm.so 0X76974802CC IBufferQueue_Enqueue(SLBufferQueueItf_ const* const*, void const*, unsigned int) (+0x15c) + 0x322cc
libmyapp.so 0x7550206848 oboe::AudioStreamOpenSLES::enqueueCallbackBuffer(SLAndroidSimpleBufferQueueItf_ const* const*) [oboe/oboe-1.10.0/src/opensles/AudioStreamOpenSLES.cpp:414 + 0x8]
libmyapp.so 0x7550206928 oboe::AudioStreamOpenSLES::processBufferCallback(SLAndroidSimpleBufferQueueItf_ const* const*) [oboe/oboe-1.10.0/src/opensles/AudioStreamOpenSLES.cpp:433 + 0x8]
libmyapp.so 0x75502069e8 bqCallbackGlue(SLAndroidSimpleBufferQueueItf_ const* const*, void*) [oboe/oboe-1.10.0/src/opensles/AudioStreamOpenSLES.cpp:460 + 0x4]
libwilhelm.so 0X769746C21C audioTrack_handleMoreData_lockPlay(CAudioPlayer_struct*, android::AudioTrack::Buffer const&) (+0x7c) + 0x1e21c
libwilhelm.so 0X769746EF3C android::AudioTrackCallback::onMoreData(android::AudioTrack::Buffer const&) (+0x2c) + 0x20f3c
libaudioclient.so 0X7697133B24 android::AudioTrack::processAudioBuffer() (+0xd34) + 0xafb24
libaudioclient.so 0X7697132A18 android::AudioTrack::AudioTrackThread::threadLoop() (+0x178) + 0xaea18
libutils.so 0X769F05A30C android::Thread::_threadLoop(void*) (+0x11c) + 0x1430c
libandroid_runtime.so 0X7679C5080C android::AndroidRuntime::javaThreadShell(void*) (+0x8c) + 0xf480c
libc.so 0X768578CD5C __pthread_start(void*) (+0xcc) + 0x101d5c
libc.so 0X7685720BC0 __start_thread (+0x40) + 0x95bc0)
- More generic one, not sure if it is on the record or play path
libwilhelm.so [offset: 0x212d4, 2759ED8CAA0B71C8FC5C784EC02A09D50]
libwilhelm.so [offset: 0x213e0, 2759ED8CAA0B71C8FC5C784EC02A09D50]
libwilhelm.so [offset: 0x213e0, 2759ED8CAA0B71C8FC5C784EC02A09D50]
libmyapp.so, File "oboe/oboe-1.10.0/src/opensles/AudioStreamOpenSLES.cpp", line 414, in oboe::AudioStreamOpenSLES::enqueueCallbackBuffer(SLAndroidSimpleBufferQueueItf_ const* const*)
libmyapp.so, File "oboe/oboe-1.10.0/src/opensles/AudioStreamOpenSLES.cpp", line 460, in bqCallbackGlue(SLAndroidSimpleBufferQueueItf_ const* const*, void*)
libwilhelm.so [offset: 0xd684, 2759ED8CAA0B71C8FC5C784EC02A09D50]
libwilhelm.so [offset: 0xd684, 2759ED8CAA0B71C8FC5C784EC02A09D50]
libmedia.so [offset: 0x7ddd8, 268022A4D9712BFDD24211423A99D51C0]
libmedia.so [offset: 0x7e4dc, 268022A4D9712BFDD24211423A99D51C0]
libutils.so [offset: 0x125e0, ADFDFD300CBB5E70DCBFEBBD571650800]
libc.so [offset: 0x689a4, 61AEF086B8CFE5276BBE04FAAB1A2FFE0]
libc.so [offset: 0x1db00, 61AEF086B8CFE5276BBE04FAAB1A2FFE0]
- During creation of recorder
libwilhelm.so 0X775E786C5C IBufferQueue_Enqueue(SLBufferQueueItf_ const* const*, void const*, unsigned int) (+0x118) + 0x31c5c
libmyapp.so 0x7562c3c848 oboe::AudioStreamOpenSLES::enqueueCallbackBuffer(SLAndroidSimpleBufferQueueItf_ const* const*) [oboe/oboe-1.10.0/src/opensles/AudioStreamOpenSLES.cpp:414 + 0x8]
libmyapp.so 0x7562c3a6d0 oboe::AudioInputStreamOpenSLES::requestStart() [oboe/oboe-1.10.0/src/opensles/AudioInputStreamOpenSLES.cpp:272 + 0x8]
I have come across #1431 and I was hopeful that upgrading from 1.7.0 to 1.10.0 will solve this crash for our use case too, but I still continue to see the crash specifically on Huawei devices only running OS 6 or 7 (very few on 8).
Few other things to note:
- We always force Oboe to use OpenSLES API for now.
- Other settings: 16K sample rate, 320 samples per frame, VOICE_COMMUNICATION preset
Steps to reproduce
Expected behavior
Actual behavior
Device
Huawei P9 Lite, Huawei Y5. I don't have these devices at hand and I see these being problematic from production logs.
Any additional context
I have ensured that both the previous fixes #1621 and #1570 are already part of my build.
Android version(s): 6, 7 mostly
Android device(s): Huawei devices exclusively
Oboe version: 1.10
App name used for testing: None
(Please try to reproduce the issue using the OboeTester or an Oboe sample.)
Short description
We are running into this crash and there are a couple of different paths leading up to this crash (always ending in
enqueueCallbackBuffer).SIGSEGV
I have come across #1431 and I was hopeful that upgrading from 1.7.0 to 1.10.0 will solve this crash for our use case too, but I still continue to see the crash specifically on Huawei devices only running OS 6 or 7 (very few on 8).
Few other things to note:
Steps to reproduce
Expected behavior
Actual behavior
Device
Huawei P9 Lite, Huawei Y5. I don't have these devices at hand and I see these being problematic from production logs.
Any additional context
I have ensured that both the previous fixes #1621 and #1570 are already part of my build.