aboutsummaryrefslogtreecommitdiff
path: root/docs/FAQ.md
diff options
context:
space:
mode:
authorKevin May <kevin.may@arm.com>2024-05-10 15:40:08 +0100
committerColm Donelan <colm.donelan@arm.com>2024-05-10 20:31:46 +0100
commit2c2f3aa6fbdd50ab5157bfc40f9335337f14abac (patch)
tree3bfbdabf5ebfd94838c038b2b94704737235ac96 /docs/FAQ.md
parent8723eb9c8f1160f9c3e677679dd1840fde5b61aa (diff)
downloadarmnn-2c2f3aa6fbdd50ab5157bfc40f9335337f14abac.tar.gz
MLCE-1276 Fix for ExecuteNetwork abort after inference
* The abort is caused during destruction of flatbuffers::ClassicLocale * Set FLATBUFFERS_LOCALE_INDEPENDENT=0 in delegates and parser so that ClassicLocale is not included Signed-off-by: Kevin May <kevin.may@arm.com> Change-Id: I34584b05998a62bae2263a2281414fcf8c12d668 Signed-off-by: Colm Donelan <colm.donelan@arm.com>
Diffstat (limited to 'docs/FAQ.md')
-rw-r--r--docs/FAQ.md13
1 files changed, 13 insertions, 0 deletions
diff --git a/docs/FAQ.md b/docs/FAQ.md
index 12fcdad052..797413ad87 100644
--- a/docs/FAQ.md
+++ b/docs/FAQ.md
@@ -78,3 +78,16 @@ Running multiple inferences in multiple threads concurrently is not supported, b
ArmNN supports multithreading at kernel level and this is implemented in Arm Compute Library (ACL) (https://github.com/ARM-software/ComputeLibrary/).
During inference, at the operator level, the main thread will create multiple threads and execute the same kernel on different parts of the data. At runtime ACL will detect the number of CPU cores in the system and use one thread per cpu core for each kernel.
Multithreading at operator level is not supported due to limitations in ACL, for more information please refer to https://arm-software.github.io/ComputeLibrary/latest/architecture.xhtml#architecture_thread_safety
+
+On Android, Executables containing Arm NN delegate or Arm NN TfLite Parser occasionally SIGABORT during destruction of Flatbuffers.
+------------------------------
+Unloading some TfLite models occasionally throws a SIGABORT. The error looks similar to this:
+~~~
+#0  0x0000007ff22df5c4 in abort () from target:/apex/com.android.runtime/lib64/bionic/libc.so
+#1  0x0000007ff22ca61c in scudo::die() () from target:/apex/com.android.runtime/lib64/bionic/libc.so
+#2  0x0000007ff22cb244 in scudo::ScopedErrorReport::~ScopedErrorReport() () from target:/apex/com.android.runtime/lib64/bionic/libc.so
+#3  0x0000007ff22cb768 in scudo::reportInvalidChunkState(scudo::AllocatorAction, void*) () from target:/apex/com.android.runtime/lib64/bionic/libc.so
+#4  0x0000007ff22cd520 in scudo::Allocator<scudo::AndroidConfig, &scudo_malloc_postinit>::deallocate(void*, scudo::Chunk::Origin, unsigned long, unsigned long) () from target:/apex/com.android.runtime/lib64/bionic/libc.so
+#5  0x0000007fee6f96f8 in flatbuffers::ClassicLocale::~ClassicLocale() () from target:/data/local/tmp/build.android.aarch64/armnn/libarmnnTfLiteParser.so
+~~~
+The solution to set the flag "-DFLATBUFFERS_LOCALE_INDEPENDENT=0" in the build. By default, this is already done for our internal executables, for example, ExecuteNetwork.