android提供了一个XXSDK 给业务调用,
在java 端开启了一个子线程调用 业务自己写的jni,在jni里面,使用dlopen调用 XXSDK中的符号,但是在很多低端手机上出现后台ANR,很奇怪,望解惑
ANR 有:
#00 pc 0x88e1c libc.so (syscall + 28) (BuildId: 21cd09af0ad2ccf35d6b8ba2d064b3c4)
#01 pc 0x22a29c libart.so (art::ConditionVariable::WaitHoldingLocks + 136) (BuildId: 4ccb65ae9ac5ad5da3af5a342d5b0b92)
#02 pc 0x73c008 libart.so (art::JNI<false>::FindClass + 1580) (BuildId: 4ccb65ae9ac5ad5da3af5a342d5b0b92)
#03 pc 0x127a1c libandroid_runtime.so (android::NativeDisplayEventReceiver::dispatchVsync + 92) (BuildId: 48ad9f7ce079268af4c97651d7141de3)
#04 pc 0xb7eb4 libgui.so (android::DisplayEventDispatcher::handleEvent + 276) (BuildId: 8220cdb9b03ace69cf4636b952eb9456)
#05 pc 0x18224 libutils.so (android::Looper::pollInner + 1060) (BuildId: 10aac5d4a671e4110bc00c9b69d83d8a)
#06 pc 0x17da0 libutils.so (android::Looper::pollOnce + 112) (BuildId: 10aac5d4a671e4110bc00c9b69d83d8a)
#07 pc 0x162d0c libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce + 44) (BuildId: 48ad9f7ce079268af4c97651d7141de3)
at android.os.MessageQueue.nativePollOnce(Native method)
at android.os.MessageQueue.next(MessageQueue.java:335)
at android.os.Looper.loopOnce(Looper.java:161)
和
#00 pc 0x4b50c libc.so (syscall + 28)
#01 pc 0x1b17a4 libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*) + 148)
#02 pc 0x3a5654 libart.so (art::JNI<false>::CallObjectMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list) + 500)
#03 pc 0x4074 libnativehelper.so (_JNIEnv::CallObjectMethod(_jobject*, _jmethodID*, ...) + 124)
#04 pc 0xea2e8 libandroid_runtime.so (android::NativeDisplayEventReceiver::dispatchVsync(long, unsigned long, unsigned int) + 48)
#05 pc 0x8fd80 libgui.so (android::DisplayEventDispatcher::handleEvent(int, int, void*) + 160)
#06 pc 0x1a064 libutils.so (android::Looper::pollInner(int) + 916)
#07 pc 0x19c68 libutils.so (android::Looper::pollOnce(int, int*, int*, void**) + 112)
#08 pc 0x114a0c libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int) + 44)
at android.os.MessageQueue.nativePollOnce(Native method)
at android.os.MessageQueue.next(MessageQueue.java:335)
本来开启了线程不知道为何还会出现ANR