Guys, I’m also experiencing this, not with Camera but with video decoding! I’m trying to get JPGs from a videostream with ExoPlayer, and it seems to reproduce the same issue.
Here is my few-liner sample which reproduces the issue with 100% rate:
@Override
protected void onResume() {
super.onResume();
SimpleExoPlayer player = new SimpleExoPlayer.Builder(this)
.setTrackSelector(new DefaultTrackSelector(this)).build();
ImageReader imgReader = ImageReader.newInstance(1600, 900, ImageFormat.YUV_420_888, 5);
imgReader.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader imageReader) {
Image i = imageReader.acquireLatestImage();
Image.Plane[] planes = i.getPlanes();
Log.d(TAG, "onImageAvailable! planes=" + planes.length);
i.close();
}
}, null);
player.setVideoSurface(imgReader.getSurface());
// Build the media item.
MediaItem mediaItem = MediaItem.fromUri("file:/android_asset/test.mp4");
String playerInfo = Util.getUserAgent(getApplicationContext(), "ExoPlayerInfo");
DefaultDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(
getApplicationContext(), playerInfo
);
ProgressiveMediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory)
.createMediaSource(mediaItem);
player.setMediaSource(mediaSource);
player.prepare();
player.setPlayWhenReady(true);
}
And here is my massive crash after calling i.getPlanes()
:
runtime.cc:677] Aborting thread:
runtime.cc:677] "main" prio=10 tid=1 Native
runtime.cc:677] | group="" sCount=0 dsCount=0 flags=0 obj=0x73e0a888 self=0xb4000077ce6f77b0
runtime.cc:677] | sysTid=4259 nice=-10 cgrp=default sched=0/0 handle=0x7956092500
runtime.cc:677] | state=R schedstat=( 711873541 65563277 322 ) utm=59 stm=11 core=5 HZ=100
runtime.cc:677] | stack=0x7fed265000-0x7fed267000 stackSize=8192KB
runtime.cc:677] | held mutexes= "abort lock"
runtime.cc:677] native: #00 pc 0000000000482fec /apex/com.android.art/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+140)
runtime.cc:677] native: #01 pc 00000000005887ec /apex/com.android.art/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool, BacktraceMap*, bool) const+380)
runtime.cc:677] native: #02 pc 000000000054ed58 /apex/com.android.art/lib64/libart.so (art::AbortState::DumpThread(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, art::Thread*) const+60)
runtime.cc:677] native: #03 pc 000000000053b088 /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)+2468)
runtime.cc:677] native: #04 pc 000000000001394c /system/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_3::__invoke(char const*)+76)
runtime.cc:677] native: #05 pc 00000000000130cc /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+312)
runtime.cc:677] native: #06 pc 00000000003728f4 /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+2596)
runtime.cc:677] native: #07 pc 0000000000372a64 /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbortF(char const*, char const*, ...)+188)
runtime.cc:677] native: #08 pc 000000000044cd10 /apex/com.android.art/lib64/libart.so (art::JNI<true>::NewDirectByteBuffer(_JNIEnv*, void*, long)+120)
2021-05-08 15:50:42.685 4259-4259/com.simpleexo A/com.simpleexo: runtime.cc:677] native: #09 pc 000000000036045c /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::NewDirectByteBuffer(_JNIEnv*, void*, long)+732)
runtime.cc:677] native: #10 pc 000000000003f21c /system/lib64/libmedia_jni.so (Image_createSurfacePlanes(_JNIEnv*, _jobject*, int, int)+644)
runtime.cc:677] native: #11 pc 0000000000267158 /system/framework/arm64/boot-framework.oat (art_jni_trampoline+152)
runtime.cc:677] native: #12 pc 0000000000134564 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
runtime.cc:677] native: #13 pc 0000000000198e94 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+204)
runtime.cc:677] native: #14 pc 000000000030c218 /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376)
runtime.cc:677] native: #15 pc 0000000000307330 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+884)
runtime.cc:677] native: #16 pc 000000000063d560 /apex/com.android.art/lib64/libart.so (MterpInvokeDirect+592)
runtime.cc:677] native: #17 pc 000000000012e914 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct+20)
runtime.cc:677] native: #18 pc 00000000002c53c2 /system/framework/framework.jar (offset 9c6000) (android.media.ImageReader$SurfaceImage.getPlanes+38)
runtime.cc:677] native: #19 pc 000000000063b274 /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+1440)
runtime.cc:677] native: #20 pc 000000000012e814 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20)
runtime.cc:677] native: #21 pc 00000000000341e4 [anon:dalvik-classes2.dex extracted in memory from /data/app/~~u0NLYkEQuMK8mJleY_KKmw==/com.simpleexo-wWaMZV3df8lw4Eow4gTG8g==/base.apk!classes2.dex] (com.simpleexo.MainActivity$1.onImageAvailable+8)
runtime.cc:677] native: #22 pc 000000000063cc08 /apex/com.android.art/lib64/libart.so (MterpInvokeInterface+1840)
runtime.cc:677] native: #23 pc 000000000012ea14 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_interface+20)
runtime.cc:677] native: #24 pc 00000000002c51f8 /system/framework/framework.jar (offset 9c6000) (android.media.ImageReader$ListenerHandler.handleMessage+72)
runtime.cc:677] native: #25 pc 000000000063b274 /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+1440)
runtime.cc:677] native: #26 pc 000000000012e814 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20)
runtime.cc:677] native: #27 pc 000000000040dd2a /system/framework/framework.jar (offset 9c6000) (android.os.Handler.dispatchMessage+38)
runtime.cc:677] native: #28 pc 000000000063b274 /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+1440)
runtime.cc:677] native: #29 pc 000000000012e814 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20)
runtime.cc:677] native: #30 pc 000000000044d694 /system/framework/framework.jar (offset 9c6000) (android.os.Looper.loop+480)
runtime.cc:677] native: #31 pc 00000000002fed0c /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.2255279045661746555)+268)
runtime.cc:677] native: #32 pc 00000000003069d4 /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+200)
runtime.cc:677] native: #33 pc 0000000000307cb4 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, true>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+1780)
2021-05-08 15:50:42.685 4259-4259/com.simpleexo A/com.simpleexo: runtime.cc:677] native: #34 pc 000000000016f3e4 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<true, false>(art::interpreter::SwitchImplContext*)+54148)
runtime.cc:677] native: #35 pc 00000000001407d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8)
runtime.cc:677] native: #36 pc 00000000001caf80 /system/framework/framework.jar (android.app.ActivityThread.main)
runtime.cc:677] native: #37 pc 00000000002fee14 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.2255279045661746555)+532)
runtime.cc:677] native: #38 pc 00000000006299e8 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+796)
runtime.cc:677] native: #39 pc 000000000013dff8 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88)
runtime.cc:677] native: #40 pc 00000000001347e8 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568)
runtime.cc:677] native: #41 pc 0000000000198eb0 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+232)
runtime.cc:677] native: #42 pc 00000000005320fc /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
runtime.cc:677] native: #43 pc 0000000000533df0 /apex/com.android.art/lib64/libart.so (art::InvokeMethod(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+1352)
runtime.cc:677] native: #44 pc 00000000004b53fc /apex/com.android.art/lib64/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*)+52)
runtime.cc:677] native: #45 pc 000000000008a6f4 /apex/com.android.art/javalib/arm64/boot.oat (art_jni_trampoline+180)
runtime.cc:677] native: #46 pc 0000000000134564 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
runtime.cc:677] native: #47 pc 0000000000198e94 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+204)
runtime.cc:677] native: #48 pc 000000000030c218 /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376)
runtime.cc:677] native: #49 pc 0000000000307330 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+884)
runtime.cc:677] native: #50 pc 000000000063b038 /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+868)
runtime.cc:677] native: #51 pc 000000000012e814 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20)
runtime.cc:677] native: #52 pc 0000000000230132 /system/framework/framework.jar (offset 1bee000) (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+22)
runtime.cc:677] native: #53 pc 00000000002fed0c /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.2255279045661746555)+268)
runtime.cc:677] native: #54 pc 00000000006299e8 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+796)
runtime.cc:677] native: #55 pc 000000000013dff8 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88)
runtime.cc:677] native: #56 pc 0000000000b0193c /system/framework/arm64/boot-framework.oat (com.android.internal.os.ZygoteInit.main+2444)
runtime.cc:677] native: #57 pc 00000000001347e8 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568)
2021-05-08 15:50:42.685 4259-4259/com.simpleexo A/com.simpleexo: runtime.cc:677] native: #58 pc 0000000000198eb0 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+232)
runtime.cc:677] native: #59 pc 00000000005320fc /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
runtime.cc:677] native: #60 pc 0000000000531cf4 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, std::__va_list)+428)
runtime.cc:677] native: #61 pc 0000000000532c5c /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+92)
runtime.cc:677] native: #62 pc 00000000004249b8 /apex/com.android.art/lib64/libart.so (art::JNI<true>::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+656)
runtime.cc:677] native: #63 pc 000000000009c434 /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+124)
runtime.cc:677] native: #64 pc 00000000000a4574 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+848)
runtime.cc:677] native: #65 pc 000000000000358c /system/bin/app_process64 (main+1348)
runtime.cc:677] native: #66 pc 000000000004a1e4 /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+108)
runtime.cc:677] at android.media.ImageReader$SurfaceImage.nativeCreatePlanes(Native method)
runtime.cc:677] - locked <0x0eec253e> (a android.media.ImageReader$SurfaceImage)
runtime.cc:677] at android.media.ImageReader$SurfaceImage.getPlanes(ImageReader.java:912)
runtime.cc:677] at com.simpleexo.MainActivity$1.onImageAvailable(MainActivity.java:136)
runtime.cc:677] at android.media.ImageReader$ListenerHandler.handleMessage(ImageReader.java:812)
runtime.cc:677] at android.os.Handler.dispatchMessage(Handler.java:106)
runtime.cc:677] at android.os.Looper.loop(Looper.java:246)
runtime.cc:677] at android.app.ActivityThread.main(ActivityThread.java:8506)
runtime.cc:677] at java.lang.reflect.Method.invoke(Native method)
runtime.cc:677] at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
runtime.cc:677] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
runtime.cc:677]
2021-05-08 15:50:42.685 4259-4259/com.simpleexo A/com.simpleexo: runtime.cc:685] JNI DETECTED ERROR IN APPLICATION: non-zero capacity for nullptr pointer: 1
runtime.cc:685] in call to NewDirectByteBuffer
runtime.cc:685] from android.media.ImageReader$SurfaceImage$SurfacePlane[] android.media.ImageReader$SurfaceImage.nativeCreatePlanes(int, int)
--------- beginning of crash
2021-05-08 15:50:42.686 4259-4259/com.simpleexo A/libc: Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 4259 (com.simpleexo), pid 4259 (com.simpleexo)