Tensorflow lite 在 Android 上的本机库 libtensorflowlite_jni.so 崩溃,代码为 11

Bur*_*mer 5 android background native tensorflow-lite

我试图在后台(应用程序关闭时)非常频繁地运行tensorflow lite模型(每隔几分钟一次)。应用程序运行几个小时后,我收到此错误消息signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)。我知道还有其他人遇到过类似的问题,但在尝试了我能找到的所有解决方案后,我认为这可能是一个不同的问题。

Google Play 控制台崩溃日志

pid: 0, tid: 0 >>> com.DD.GooglePlay <<<

backtrace:
  #00  pc 00000000001cf138  /data/app/~~PXyjTXZK6uVX_JbQzF-CNA==/com.DD.GooglePlay-qOnVNcJEpWKOgoYLG3cmFQ==/base.apk!libtensorflowlite_jni.so (offset 0xe52000)
  #00  pc 00000000001cef98  /data/app/~~PXyjTXZK6uVX_JbQzF-CNA==/com.DD.GooglePlay-qOnVNcJEpWKOgoYLG3cmFQ==/base.apk!libtensorflowlite_jni.so (offset 0xe52000)
  #00  pc 00000000001c75ec  /data/app/~~PXyjTXZK6uVX_JbQzF-CNA==/com.DD.GooglePlay-qOnVNcJEpWKOgoYLG3cmFQ==/base.apk!libtensorflowlite_jni.so (offset 0xe52000)
  #00  pc 00000000000828b0  /data/app/~~PXyjTXZK6uVX_JbQzF-CNA==/com.DD.GooglePlay-qOnVNcJEpWKOgoYLG3cmFQ==/base.apk!libtensorflowlite_jni.so (offset 0xe52000)
  #00  pc 00000000000822dc  /data/app/~~PXyjTXZK6uVX_JbQzF-CNA==/com.DD.GooglePlay-qOnVNcJEpWKOgoYLG3cmFQ==/base.apk!libtensorflowlite_jni.so (offset 0xe52000)
  #00  pc 00000000000b2ba4  /data/app/~~PXyjTXZK6uVX_JbQzF-CNA==/com.DD.GooglePlay-qOnVNcJEpWKOgoYLG3cmFQ==/base.apk!libtensorflowlite_jni.so (offset 0xe52000)
  #00  pc 00000000000b8470  /data/app/~~PXyjTXZK6uVX_JbQzF-CNA==/com.DD.GooglePlay-qOnVNcJEpWKOgoYLG3cmFQ==/base.apk!libtensorflowlite_jni.so (offset 0xe52000)
  #00  pc 00000000000b70a0  /data/app/~~PXyjTXZK6uVX_JbQzF-CNA==/com.DD.GooglePlay-qOnVNcJEpWKOgoYLG3cmFQ==/base.apk!libtensorflowlite_jni.so (offset 0xe52000)
  #00  pc 00000000000b13a8  /data/app/~~PXyjTXZK6uVX_JbQzF-CNA==/com.DD.GooglePlay-qOnVNcJEpWKOgoYLG3cmFQ==/base.apk!libtensorflowlite_jni.so (offset 0xe52000)
  #00  pc 00000000001dd640  /data/app/~~PXyjTXZK6uVX_JbQzF-CNA==/com.DD.GooglePlay-qOnVNcJEpWKOgoYLG3cmFQ==/base.apk!libtensorflowlite_jni.so (offset 0xe52000)
  #00  pc 00000000001e0414  /data/app/~~PXyjTXZK6uVX_JbQzF-CNA==/com.DD.GooglePlay-qOnVNcJEpWKOgoYLG3cmFQ==/base.apk!libtensorflowlite_jni.so (offset 0xe52000)
  #00  pc 000000000004af50  /data/app/~~PXyjTXZK6uVX_JbQzF-CNA==/com.DD.GooglePlay-qOnVNcJEpWKOgoYLG3cmFQ==/base.apk!libtensorflowlite_jni.so (offset 0xe52000) (Java_org_tensorflow_lite_NativeInterpreterWrapper_run+32)
  #00  pc 000000000013ded4  /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+148)
  #00  pc 0000000002023f64  /memfd:jit-cache (org.tensorflow.lite.NativeInterpreterWrapper.run+436)
  #00  pc 0000000000134564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
  #00  pc 0000000000198e94  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+204)
  #00  pc 000000000030c254  /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376)
  #00  pc 000000000030736c  /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)
  #00  pc 000000000063b0d4  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+868)
  #00  pc 000000000012e814  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20)
  #00  pc 000000000031b136  [anon:dalvik-classes.dex (org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs+10)
  #00  pc 000000000063b310  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+1440)
  #00  pc 000000000012e814  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20)
  #00  pc 000000000031b114  [anon:dalvik-classes.dex (org.tensorflow.lite.Interpreter.run+36)
  #00  pc 000000000063b310  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+1440)
  #00  pc 000000000012e814  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20)
  #00  pc 000000000000f884  [anon:dalvik-classes3.dex (com.DD.GooglePlay.TensorFlowImageClassifier.recognizeImage+36)
  #00  pc 000000000063cca4  /apex/com.android.art/lib64/libart.so (MterpInvokeInterface+1840)
  #00  pc 000000000012ea14  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_interface+20)
  #00  pc 000000000000c30a  [anon:dalvik-classes3.dex (com.DD.GooglePlay.PhotoTaker.delete+334)
  #00  pc 00000000002fed48  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.18441993989064323955)+268)
  #00  pc 0000000000629a84  /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+796)
  #00  pc 000000000013dff8  /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #00  pc 00000000020098e8  /memfd:jit-cache (com.DD.GooglePlay.PhotoTaker$3.run+6344)
  #00  pc 0000000000134564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
  #00  pc 0000000000198e94  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+204)
  #00  pc 0000000000532198  /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)
  #00  pc 0000000000533398  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+440)
  #00  pc 00000000005808b8  /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1272)
  #00  pc 00000000000b6374  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
  #00  pc 0000000000050fa4  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
Run Code Online (Sandbox Code Playgroud)

尝试的解决方案

我尝试根据更改张量流版本。此外,我尝试按照他们在这里所做的方式更改张量流实现。

小智 1

有人解决了上述问题吗?当我尝试在物理设备上在后台运行模型时,我得到了同样的结果。我已经尝试了在互联网上可以找到的所有解决方案,但没有成功。