- Notifications
You must be signed in to change notification settings - Fork 48
Description
My usage:
`package com.thinhnguyen.xface
class FindDistanceActivityViewModel(): ViewModel() {
private fun l2Normalize(source: NDArray<Float, D1>): NDArray<Float, D1> { return source / sqrt((source*source).sum()) } private fun euclideanDistanceL2(a: List<Float>, b: List<Float>): Float { val aNp = mk.ndarray(a) val bNp = mk.ndarray(b) val aNpNorm = l2Normalize(aNp) val bNpNorm = l2Normalize(bNp) return sqrt(((aNpNorm - bNpNorm)*(aNpNorm - bNpNorm)).sum()) } fun findDistance(image: Bitmap){ viewModelScope.launch { .... val sourceRepresentVector = mutableListOf(1.0f,2.0f,6.0f,8.0f) val targetRepresentVector = mutableListOf(2.3f,5.6f,8.1f,1.2f) val distance = euclideanDistanceL2(sourceRepresentVector, targetRepresentVector) .... // Do others background task } } }`
Logcat while running:
.....
runtime.cc:675] "arch_disk_io_3" prio=5 tid=53 Waiting
runtime.cc:675] | group="" sCount=1 ucsCount=0 flags=1 obj=0x12e5d5b0 self=0xb400007910b18400
runtime.cc:675] | sysTid=28927 nice=0 cgrp=default sched=0/0 handle=0x788dfe1cb0
runtime.cc:675] | state=S schedstat=( 5396720 283124 4 ) utm=0 stm=0 core=0 HZ=100
runtime.cc:675] | stack=0x788dede000-0x788dee0000 stackSize=1039KB
runtime.cc:675] | held mutexes=
runtime.cc:675] native: #00 pc 0000000000075f30 /apex/com.android.runtime/lib64/bionic/libc.so (syscall+32) (BuildId: bbbdeb7c87c74f1491f92c6e605095b0)
runtime.cc:675] native: #1 pc 0000000000446c08 /apex/com.android.art/lib64/libart.so (art::Thread::Park(bool, long)+404) (BuildId: 56e704c544e6c624201be2ab4933e853)
runtime.cc:675] native: #2 pc 0000000000446530 /apex/com.android.art/lib64/libart.so (art::Unsafe_park(_JNIEnv*, _jobject*, unsigned char, long) (.__uniq.319429422067363160645159987129209045680)+148) (BuildId: 56e704c544e6c624201be2ab4933e853)
runtime.cc:675] at jdk.internal.misc.Unsafe.park(Native method)
runtime.cc:675] - waiting on an unknown object
runtime.cc:675] at java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
runtime.cc:675] at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
runtime.cc:675] at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
runtime.cc:675] at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
runtime.cc:675] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
runtime.cc:675] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
runtime.cc:675] at java.lang.Thread.run(Thread.java:1012)
runtime.cc:675]
runtime.cc:675] Aborting thread:
runtime.cc:675] "main" prio=10 tid=1 Native
runtime.cc:675] | group="" sCount=0 ucsCount=0 flags=0 obj=0x7170d3f8 self=0xb40000799d812400
runtime.cc:675] | sysTid=28644 nice=-10 cgrp=default sched=0/0 handle=0x7a4be0e500
runtime.cc:675] | state=R schedstat=( 3584711965 216954483 1043 ) utm=305 stm=53 core=7 HZ=100
runtime.cc:675] | stack=0x7fdaf94000-0x7fdaf96000 stackSize=8188KB
runtime.cc:675] | held mutexes= "abort lock" "mutator lock"(shared held)
runtime.cc:675] native: #00 pc 00000000005376cc /apex/com.android.art/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits >&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+128) (BuildId: 56e704c544e6c624201be2ab4933e853)
runtime.cc:675] native: #1 pc 00000000006f0e24 /apex/com.android.art/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits >&, bool, BacktraceMap*, bool) const+236) (BuildId: 56e704c544e6c624201be2ab4933e853)
A/inhnguyen.xfac: runtime.cc:675] native: #2 pc 00000000006d834c /apex/com.android.art/lib64/libart.so (art::AbortState::DumpThread(std::__1::basic_ostream<char, std::__1::char_traits >&, art::Thread*) const+60) (BuildId: 56e704c544e6c624201be2ab4933e853)
runtime.cc:675] native: #3 pc 00000000006d7f80 /apex/com.android.art/lib64/libart.so (art::AbortState::Dump(std::__1::basic_ostream<char, std::__1::char_traits >&) const+400) (BuildId: 56e704c544e6c624201be2ab4933e853)
runtime.cc:675] native: #4 pc 00000000006d2b24 /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)+1016) (BuildId: 56e704c544e6c624201be2ab4933e853)
runtime.cc:675] native: #5 pc 0000000000016ea8 /apex/com.android.art/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_3::__invoke(char const*)+80) (BuildId: b77c57f68a484ed93d5a7eda59d83bf9)
runtime.cc:675] native: #6 pc 0000000000016450 /apex/com.android.art/lib64/libbase.so (android::base::LogMessage::~LogMessage()+352) (BuildId: b77c57f68a484ed93d5a7eda59d83bf9)
runtime.cc:675] native: #7 pc 0000000000445224 /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1612) (BuildId: 56e704c544e6c624201be2ab4933e853)
runtime.cc:675] native: #8 pc 0000000000329258 /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, std::__va_list)+108) (BuildId: 56e704c544e6c624201be2ab4933e853)
runtime.cc:675] native: #9 pc 000000000048d59c /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::AbortF(char const*, ...) (.__uniq.99033978352804627313491551960229047428)+144) (BuildId: 56e704c544e6c624201be2ab4933e853)
runtime.cc:675] native: #10 pc 0000000000453974 /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::Check(art::ScopedObjectAccess&, bool, char const*, art::(anonymous namespace)::JniValueType*) (.__uniq.99033978352804627313491551960229047428)+4300) (BuildId: 56e704c544e6c624201be2ab4933e853)
runtime.cc:675] native: #11 pc 00000000005c8920 /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::FindClass(_JNIEnv*, char const*) (.__uniq.99033978352804627313491551960229047428.llvm.5591279935177935698)+188) (BuildId: 56e704c544e6c624201be2ab4933e853)
runtime.cc:675] native: #12 pc 0000000000024ca0 /data/data/com.thinhnguyen.xface/cache/jni_multik4678949286564482544/libmultik_jni-androidArm64.so (Java_org_jetbrains_kotlinx_multik_openblas_math_JniMath_sum+460)
runtime.cc:675] at org.jetbrains.kotlinx.multik.openblas.math.JniMath.sum(Native method)
runtime.cc:675] at org.jetbrains.kotlinx.multik.openblas.math.NativeMath.sum(NativeMath.kt:126)
runtime.cc:675] at org.jetbrains.kotlinx.multik.default.math.DefaultMath.sum(DefaultMath.kt:94)
runtime.cc:675] at org.jetbrains.kotlinx.multik.ndarray.operations.IteratingNDArrayKt.sum(IteratingNDArray.kt:1242)
runtime.cc:675] at com.thinhnguyen.xface.FindDistanceActivityViewModel.l2Normalize(FindDistanceActivityViewModel.kt:50)
runtime.cc:675] at com.thinhnguyen.xface.FindDistanceActivityViewModel.euclideanDistanceL2(FindDistanceActivityViewModel.kt:55)
runtime.cc:675] at com.thinhnguyen.xface.FindDistanceActivityViewModel.access$euclideanDistanceL2(FindDistanceActivityViewModel.kt:29)
runtime.cc:675] at com.thinhnguyen.xface.FindDistanceActivityViewModel$findFace$1.invokeSuspend(FindDistanceActivityViewModel.kt:72)
runtime.cc:675] at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
runtime.cc:675] at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
runtime.cc:675] at android.os.Handler.handleCallback(Handler.java:938)
runtime.cc:675] at android.os.Handler.dispatchMessage(Handler.java:99)
runtime.cc:675] at android.os.Looper.loopOnce(Looper.java:233)
runtime.cc:675] at android.os.Looper.loop(Looper.java:344)
runtime.cc:675] at android.app.ActivityThread.main(ActivityThread.java:8212)
A/inhnguyen.xfac: runtime.cc:675] at java.lang.reflect.Method.invoke(Native method)
runtime.cc:675] at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
runtime.cc:675] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1034)
runtime.cc:675]
A/inhnguyen.xfac: runtime.cc:683] JNI DETECTED ERROR IN APPLICATION: thread Thread[1,tid=28644,Runnable,Thread*=0xb40000799d812400,peer=0x7170d3f8,"main"] using JNI after critical get
runtime.cc:683] in call to FindClass
runtime.cc:683] from java.lang.Number org.jetbrains.kotlinx.multik.openblas.math.JniMath.sum(java.lang.Object, int, int, int[], int[], int)
A/libc: Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 28644 (inhnguyen.xface), pid 28644 (inhnguyen.xface)
D/ExternalTextureConv: Created output texture: 18 width: 1080 height: 1080
Disconnected from the target VM, address: 'localhost:51535', transport: 'socket'
My Debug:
I found that after execute sum function in l2Normalize the application crashed.
Please help to explain whether we can use mutik in a coroutine? or if it is an issues please help to fix it