Skip to content

Abort when using DynamicsProcessing

Some devices, using Android 10 or 11 crash when attaching DynamicsProcessing object to the audiotrack session.

Cf. the stack trace:

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> org.videolan.vlc <<<

backtrace:
  #00  pc 0000000000083134  /apex/com.android.runtime/lib64/bionic/libc.so (abort+160)
  #00  pc 00000000004b4234  /apex/com.android.runtime/lib64/libart.so (art::Runtime::Abort(char const*)+2376)
  #00  pc 000000000000c5b4  /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+608)
  #00  pc 000000000029e488  /apex/com.android.runtime/lib64/libart.so (art::IndirectReferenceTable::AbortIfNoCheckJNI(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)+236)
  #00  pc 000000000037b318  /apex/com.android.runtime/lib64/libart.so (art::IndirectReferenceTable::GetChecked(void*) const+432)
  #00  pc 000000000037688c  /apex/com.android.runtime/lib64/libart.so (art::JavaVMExt::DecodeGlobal(void*)+24)
  #00  pc 00000000004f97c8  /apex/com.android.runtime/lib64/libart.so (art::Thread::DecodeJObject(_jobject*) const+148)
  #00  pc 00000000004abb5c  /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::ArgArray::BuildArgArrayFromVarArgs(art::ScopedObjectAccessAlreadyRunnable const&, art::ObjPtr<art::mirror::Object>, std::__va_list)+136)
  #00  pc 00000000004ab9a8  /apex/com.android.runtime/lib64/libart.so (art::InvokeWithVarArgs(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+384)
  #00  pc 00000000003b7c20  /apex/com.android.runtime/lib64/libart.so (art::JNI::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+628)
  #00  pc 0000000000004bf0  /system/lib64/libaudioeffect_jni.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+116)
  #00  pc 0000000000004ab4  /system/lib64/libaudioeffect_jni.so (effectCallback(int, void*, void*)+388)
  #00  pc 000000000004c4c0  /system/lib64/libaudioclient.so (android::AudioEffect::EffectClient::commandExecuted(unsigned int, unsigned int, void*, unsigned int, void*)+196)
  #00  pc 00000000000a14b8  /system/lib64/libaudioclient.so (android::BnEffectClient::onTransact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+604)
  #00  pc 000000000004c670  /system/lib64/libbinder.so (android::BBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+136)
  #00  pc 0000000000058c60  /system/lib64/libbinder.so (android::IPCThreadState::executeCommand(int)+980)
  #00  pc 00000000000587d8  /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+156)
  #00  pc 0000000000058f14  /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+60)
  #00  pc 000000000007f124  /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24)
  #00  pc 000000000001366c  /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+288)
  #00  pc 00000000000ef900  /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
  #00  pc 00000000000e28c0  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
  #00  pc 000000000008503c  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

It's not from VLC thread, and we don't have much control and how to fix it. The issue is very likely on the Android AOSP side.