CRASH: AudioTrack::setVolume

We are getting a few of those crashes (android 12, redmi/poco devices)

setVolume:484 libaudioclient.android::AudioTrack::setVolume(float, float)
doSetVolume:112 libaaudio_internal.aaudio::AudioStreamTrack::doSetVolume()
playerSetVolume:336 libaaudio_internal.aaudio::AudioStream::MyPlayerBase::playerSetVolume()
setVolume:144 libaudioclient.android::PlayerBase::setVolume(float)
onTransact:644 libaudioclient.android::media::BnPlayer::onTransact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)
transact:248 libbinder.android::BBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)
executeCommand:1028 libbinder.android::IPCThreadState::executeCommand(int)
getAndExecuteCommand:160 libbinder.android::IPCThreadState::getAndExecuteCommand()
joinThreadPool:68 libbinder.android::IPCThreadState::joinThreadPool(bool)
Unknown:-2 libbinder.0x6cbf8
_threadLoop:260 libutils.android::thread::_threadLoop(void*)
javaThreadShell:140 libandroid_runtime.android::AndroidRuntime::javaThreadShell(void*)
Unknown:-2 libutils.0x11acc
__pthread_start:264 libc.__pthread_start(void*)
__start_thread:64 libc.__start_thread

I was checking this:

I’m guessing they are related?

The stack traces are almost identical, so I am confident this is the exact same issue with Oboe on Android 12:

Your stack trace Known issue stack trace
android::AudioTrack::setVolume(float, float) android::AudioTrack::setVolume(float, float)
aaudio::AudioStreamTrack::doSetVolume() aaudio::AudioStreamTrack::doSetVolume()
aaudio::AudioStream::MyPlayerBase::playerSetVolume() aaudio::AudioStream::MyPlayerBase::playerSetVolume()
android::PlayerBase::setVolume(float) android::PlayerBase::setVolume(float)
android::media::BnPlayer::onTransact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int) android::media::BnPlayer::onTransact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)
android::BBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int) android::BBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)
android::IPCThreadState::executeCommand(int) android::IPCThreadState::executeCommand(int)
android::IPCThreadState::getAndExecuteCommand() android::IPCThreadState::getAndExecuteCommand()
android::IPCThreadState::joinThreadPool(bool) android::IPCThreadState::joinThreadPool(bool)
- android::PoolThread::threadLoop()
android::thread::_threadLoop(void*) android::thread::_threadLoop(void*)
android::AndroidRuntime::javaThreadShell(void*) android::AndroidRuntime::javaThreadShell(void*)

Unfortunately because this is a bug with the Android audio APIs and not related to FMOD, we cannot do anything on our end to prevent this crash.

Hello! We can see that our users still have such crashes on Android 13, 14. Do you have any information about it?

libaudioclient +0x97c4c android::AudioTrack::setVolume
* libaudioclient +0xba1dc android::TrackPlayerBase::playerSetVolume
* libaudioclient +0xb91e8 android::PlayerBase::setVolume
* libaudioclient +0x45adc android::media::BnPlayer::onTransact
* libbinder +0x49840 android::BBinder::transact
* libbinder +0x53234 android::IPCThreadState::executeCommand
* libbinder +0x52d68 android::IPCThreadState::getAndExecuteCommand
* libbinder +0x535e4 android::IPCThreadState::joinThreadPool
* libbinder +0x7f030 <unknown>
* libutils +0x1223c android::Thread::_threadLoop
* libandroid_runtime +0xbd62c android::AndroidRuntime::javaThreadShell
* libutils +0x11acc <unknown>
* libc +0xb4980 <unknown>
libc +0x52aa0 <unknown>

I can’t find any reports of this crash in Android 13 or 14. Looking through the repo, it appears that the Android 13 fix was applied to AudioStream, which would resolve the AudioStream::MyPlayerBase::playerSetVolume crash case. I see a recent change in the repo to resolve a similar looking crash in TrackPlayerBase https://android-review.googlesource.com/c/platform/frameworks/av/+/2909337
So this doesn’t appear to be an FMOD issue, and I would expect this crash case to be resolved in Android 15.