nativelibs4java / BridJ

BridJ: blazing fast Java / C / C++ interop
https://code.google.com/archive/p/bridj/
Other
289 stars 77 forks source link

Android ART VM aborted on BridJ.register() #75

Open simingweng opened 8 years ago

simingweng commented 8 years ago

It's a Android Lollipop device. I used JNAerator to generate the mapping code, but BridJ.register() will cause the ART runtime to abort immediately. Below is the trace stack causing the problem. Is it due to somewhat the more restrict JNI checking added in Lollipop for ART runtime?

08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: jfieldID was NULL 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] in call to GetBooleanField 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] from long org.bridj.JNI.bindJavaMethodsToCFunctions(org.bridj.MethodCallInfo[]) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] "Binder_2" prio=5 tid=8 Runnable 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] | group="main" sCount=0 dsCount=0 obj=0x12c6e080 self=0xaea06400 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] | sysTid=32261 nice=0 cgrp=apps sched=0/0 handle=0xae97a080 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] | state=R schedstat=( 98825987 16838804 98 ) utm=9 stm=0 core=0 HZ=100 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] | stack=0xb3f46000-0xb3f48000 stackSize=1012KB 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] | held mutexes= "mutator lock"(shared held) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] native: #00 pc 00004640 /system/lib/libbacktracelibc++.so (UnwindCurrent::Unwind(unsigned int, ucontext)+23) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] native: #01 pc 00002e8d /system/lib/libbacktracelibc++.so (Backtrace::Unwind(unsigned int, ucontext)+8) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] native: #02 pc 00248971 /system/lib/libart.so (art::DumpNativeStack(std::1::basic_ostream<char, std::1::chartraits >&, int, char const, art::mirror::ArtMethod_)+68) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] native: #03 pc 0022d5d3 /system/lib/libart.so (art::Thread::Dump(std::1::basic_ostream<char, std::1::char_traits >&) const+146) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/checkjni.cc:65] native: #04 pc 000b18db /system/lib/libart.so (art::JniAbort(char const, char const_)+582) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/checkjni.cc:65] native: #05 pc 000b2015 /system/lib/libart.so (art::JniAbortF(char const, char const_, ...)+60) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] native: #06 pc 000b4051 /system/lib/libart.so (art::ScopedCheck::CheckInstanceFieldID(jobject, jfieldID)+560) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] native: #07 pc 000b7a3f /system/lib/libart.so (art::CheckJNI::GetBooleanField(JNIEnv, jobject, _jfieldID*)+50) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] native: #08 pc 0000e658 /data/app/com.jdsu.drivetest.dcimanager-1/lib/arm/libbridj.so (Java_org_bridj_JNI_bindJavaMethodsToCFunctions+852) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] native: #09 pc 00127c45 /data/dalvik-cache/arm/data@app@com.jdsu.drivetest.dcimanager-1@base.apk@classes.dex (Java_org_bridj_JNI_bindJavaMethodsToCFunctions___3Lorg_bridj_MethodCallInfo_2+100) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] at org.bridj.JNI.bindJavaMethodsToCFunctions(Native method) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] at org.bridj.NativeEntities.addDefinitions(NativeEntities.java:149) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] at org.bridj.CRuntime.register(CRuntime.java:468) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] at org.bridj.CRuntime.register(CRuntime.java:345) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] at org.bridj.BridJ.register(BridJ.java:355) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] at org.bridj.BridJ.register(BridJ.java:192) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] - locked <0x31a7d87e> (a java.lang.Class) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] at com.jdsu.drivetest.diag.DiagLibrary.(DiagLibrary.java:25) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] at com.jdsu.drivetest.dcimanager.DiagService.initialize(DiagService.java:159) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] - locked <0x37e1c1df> (a com.jdsu.drivetest.dcimanager.DiagService) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] at com.jdsu.drivetest.dcimanager.DiagService.access$1000(DiagService.java:48) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] at com.jdsu.drivetest.dcimanager.DiagService$DiagBinder.init(DiagService.java:348) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] at com.jdsu.drivetest.dcimanager.api.IDCIManager$Stub.onTransact(IDCIManager.java:48) 08-12 17:40:12.319 32246-32261/com.jdsu.drivetest.dcimanager A/art﹕ sart/runtime/check_jni.cc:65] at android.os.Binder.execTransact(Binder.java:446)