NativeScript / NativeScript/android

JNI Exception when accessing static fields of some Android classes

Đang mở
#728 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

bug severity: low
Ngôn ngữ chính
C++
Star
563
Fork
144
Merge trung bình
10 giờ 46 phút
Pull request đã merge (30 ngày)
14

Mô tả

Tell us about the problem

Attempting to access some static constants of certain classes will result in the following exception:
JNI DETECTED ERROR IN APPLICATION: static jfieldID X not valid for class Y

Known conflicting classes and fields:

Please provide the following version numbers that your issue occurs with:
  • Runtime(s): 2.5
Did the error happen while the app was being constructed? (buildtime error)

C++ Stacktrace

03-20 10:08:31.054 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410] JNI DETECTED ERROR IN APPLICATION: static jfieldID 0x707ff280 not valid for class java.lang.Class<android.provider.ContactsContract$Data>
03-20 10:08:31.054 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]     in call to GetStaticObjectField
03-20 10:08:31.054 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]     from java.lang.Object com.tns.Runtime.callJSMethodNative(int, int, java.lang.String, int, boolean, java.lang.Object[])
03-20 10:08:31.054 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410] "main" prio=5 tid=1 Runnable
03-20 10:08:31.054 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   | group="main" sCount=0 dsCount=0 obj=0x740842a0 self=0xb4cf6500
03-20 10:08:31.054 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   | sysTid=14495 nice=0 cgrp=default sched=0/0 handle=0xb6f04b34
03-20 10:08:31.054 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   | state=R schedstat=( 1323742611 224979275 776 ) utm=106 stm=26 core=0 HZ=100
03-20 10:08:31.054 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   | stack=0xbe7d4000-0xbe7d6000 stackSize=8MB
03-20 10:08:31.054 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   | held mutexes= "mutator lock"(shared held)
03-20 10:08:31.054 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #00 pc 00370e01  /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, char const*, art::ArtMethod*, void*)+160)
03-20 10:08:31.054 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #01 pc 0035046f  /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const+150)
03-20 10:08:31.054 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #02 pc 0025a725  /system/lib/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+740)
03-20 10:08:31.054 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #03 pc 0025adfd  /system/lib/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, std::__va_list)+64)
03-20 10:08:31.054 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #04 pc 000fd1d1  /system/lib/libart.so (art::ScopedCheck::AbortF(char const*, ...)+32)
03-20 10:08:31.054 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #05 pc 00114ab1  /system/lib/libart.so (art::ScopedCheck::CheckFieldAccess(art::ScopedObjectAccess&, _jobject*, _jfieldID*, bool, art::Primitive::Type)+452)
03-20 10:08:31.054 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #06 pc 001164d5  /system/lib/libart.so (art::CheckJNI::GetField(char const*, _JNIEnv*, _jobject*, _jfieldID*, bool, art::Primitive::Type)+524)
03-20 10:08:31.054 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #07 pc 00116a6f  /system/lib/libart.so (art::CheckJNI::GetStaticObjectField(_JNIEnv*, _jclass*, _jfieldID*)+30)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #08 pc 00501870  /data/app/com.tns.android_runtime_testapp-1/lib/arm/libNativeScript.so (_JNIEnv::GetStaticObjectField(_jclass*, _jfieldID*)+60)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #09 pc 00501818  /data/app/com.tns.android_runtime_testapp-1/lib/arm/libNativeScript.so (tns::JEnv::GetStaticObjectField(_jclass*, _jfieldID*)+56)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #10 pc 0048bea4  /data/app/com.tns.android_runtime_testapp-1/lib/arm/libNativeScript.so (tns::FieldAccessor::GetJavaField(v8::Isolate*, v8::Local<v8::Object> const&, tns::FieldCallbackData*)+7292)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #11 pc 0035e70c  /data/app/com.tns.android_runtime_testapp-1/lib/arm/libNativeScript.so (tns::CallbackHandlers::GetJavaField(v8::Isolate*, v8::Local<v8::Object> const&, tns::FieldCallbackData*)+56)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #12 pc 0042483c  /data/app/com.tns.android_runtime_testapp-1/lib/arm/libNativeScript.so (tns::MetadataNode::FieldAccessorGetterCallback(v8::Local<v8::String>, v8::PropertyCallbackInfo<v8::Value> const&)+2052)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #13 pc 007ac9b7  /data/app/com.tns.android_runtime_testapp-1/lib/arm/libNativeScript.so (???)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #14 pc 0084fd1f  /data/app/com.tns.android_runtime_testapp-1/lib/arm/libNativeScript.so (v8::internal::Object::GetPropertyWithAccessor(v8::internal::LookupIterator*)+262)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #15 pc 0086c79b  /data/app/com.tns.android_runtime_testapp-1/lib/arm/libNativeScript.so (v8::internal::Object::GetProperty(v8::internal::LookupIterator*)+186)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #16 pc 007b0859  /data/app/com.tns.android_runtime_testapp-1/lib/arm/libNativeScript.so (v8::internal::LoadIC::Load(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Name>)+84)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #17 pc 007b370f  /data/app/com.tns.android_runtime_testapp-1/lib/arm/libNativeScript.so (v8::internal::Runtime_LoadIC_Miss(int, v8::internal::Object**, v8::internal::Isolate*)+478)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   native: #18 pc 00000098   (???)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   at com.tns.Runtime.callJSMethodNative(Native method)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1021)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   at com.tns.Runtime.callJSMethodImpl(Runtime.java:903)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   at com.tns.Runtime.callJSMethod(Runtime.java:890)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   at com.tns.Runtime.callJSMethod(Runtime.java:874)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   at com.tns.Runtime.callJSMethod(Runtime.java:866)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   at com.tns.gen.android.view.View_OnClickListener.onClick(android.view.View$OnClickListener.java:-1)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   at android.view.View.performClick(View.java:5204)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   at android.view.View$PerformClick.run(View.java:21153)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   at android.os.Handler.handleCallback(Handler.java:739)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   at android.os.Handler.dispatchMessage(Handler.java:95)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   at android.os.Looper.loop(Looper.java:148)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   at android.app.ActivityThread.main(ActivityThread.java:5417)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.reflect.Method.invoke!(Native method)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410]   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
03-20 10:08:31.055 14495-14495/com.tns.android_runtime_testapp A/art: art/runtime/java_vm_ext.cc:410] 
Did the error happen while the app was executing? (runtime error)

Yes.

Please tell us how to recreate the issue in as much detail as possible.

accessing android.provider.ContactsContract.Data.EXTRA_ADDRESS_BOOK_INDEX anywhere in code crashes the app.

Tested on Genymotion Emulators: API 21, API 23
Tested on Real Nexus 5 Device: API 23

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Tái hiện lỗi crash trên Android API 21 hoặc 23 bằng cách sử dụng ContactsContract.Data.EXTRA_ADDRESS_BOOK_INDEX, sau đó lần theo quyền truy cập JNI từ tns::FieldAccessor::GetJavaField qua GetStaticObjectField và Runtime.java. Được xem là hoàn tất khi các trường static được liệt kê không còn kích hoạt JNI DETECTED ERROR mà vẫn duy trì quyền truy cập vào các giá trị của chúng.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
android, cpp
Lĩnh vực
mobile-dev
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
30/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.