[Interest] Qt 5.11.2 for Android Prebuilt- Crash in the First Non-Qt JNI

coroberti . coroberti at gmail.com
Mon Nov 5 10:06:53 CET 2018


Dear Marcus,
Thank you very much!

Kind regards,
Robert Iakobashvili
............................
On Mon, Nov 5, 2018 at 10:50 AM Markus Maier <markus.maier.sw at gmail.com> wrote:
>
> Hi,
>
> I didn't look through your logs in detail, but the issue sounds like it might be related to https://bugreports.qt.io/browse/QTBUG-68813 - I needed the workaround from the end of the bug's description in order to get my JNI calls working again. My code also works with Qt 5.9 and doesn't work with 5.11.2, just like in this report.
>
> The workaround might however have some bad side effects, as mentioned by Bogdan Vatra (the Qt for Android maintainer) in one of the comments - the issue is unresolved ...
>
> Best regards
> Markus
>
>
> Am Do., 1. Nov. 2018 um 20:31 Uhr schrieb coroberti . <coroberti at gmail.com>:
>>
>> Hi,
>> I was trying to build my Qt widget app that is working on Android
>> since Qt 5.3, later 5.7 and 5.9
>> using downloaded offline Qt 5.11.2.
>>
>> Using Qt JNI seems to be working properly, like:
>> RequestPermissions =
>>
>> QAndroidJniObject("com/domain/myapp/permissions/RequestPermissions",
>>                                   "(Landroid/app/Activity;)V",
>>                                   QtAndroid::androidActivity().object<jobject>()
>>                                   );
>>
>>         // Checking for errors in the JNI
>>         QAndroidJniEnvironment env;
>>         if (env->ExceptionCheck()) {
>>             // Handle exception here.
>>             env->ExceptionClear();
>>         }
>>
>> Unfortunately, the very first non-Qt JNI in my app crashes it.
>> JNIEnv* env;
>>     if (g_javaVM->AttachCurrentThread(&env, NULL)<0)
>>     {
>>         return false;
>>     }
>>     jboolean res = env->CallStaticBooleanMethod(s_sharingClassID,
>> s_sharingMyFuncMethodID);
>>     g_javaVM->DetachCurrentThread();
>>
>> This is not something specific JNI, but really the first one non-Qt
>> JNI crashes it.
>>
>>
>> Is there any initialization or some magic in the new Qt JNI that could impact
>> non-Qt JNI?
>>
>> Should I detach thread manually after Qt JNI?
>>
>>
>> rt : art/runtime/runtime.cc:1537]
>> Thread[11,tid=6741,Native,Thread*=0xe4ab5f00,peer=0x12c11ee0,"qtMainLoopThread"]
>> attempting to detach while still running code
>> F art : art/runtime/runtime.cc:424] Runtime aborting...
>> F art : art/runtime/runtime.cc:424] Aborting thread:
>> F art : art/runtime/runtime.cc:424] "qtMainLoopThread" prio=5 tid=11 Native
>> F art : art/runtime/runtime.cc:424] | group="" sCount=0 dsCount=0
>> obj=0x12c11ee0 self=0xe4ab5f00
>> F art : art/runtime/runtime.cc:424] | sysTid=6741 nice=0 cgrp=default
>> sched=0/0 handle=0xf07bc920
>> F art : art/runtime/runtime.cc:424] | state=R schedstat=( 78120491
>> 95764296 62 ) utm=6 stm=1 core=0 HZ=100
>> F art : art/runtime/runtime.cc:424] | stack=0xf06ba000-0xf06bc000
>> stackSize=1038KB
>> F art : art/runtime/runtime.cc:424] | held mutexes= "abort lock"
>>
>> F art : art/runtime/runtime.cc:424] native: #00 pc 0058848e
>> /system/lib/libart.so
>> (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiP12BacktraceMapPKcPNS_9ArtMethodEPv+238)
>> F art : art/runtime/runtime.cc:424] native: #01 pc 00553ebe
>> /system/lib/libart.so
>> (_ZNK3art6Thread9DumpStackERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMap+526)
>> F art : art/runtime/runtime.cc:424] native: #02 pc 00550ebb
>> /system/lib/libart.so
>> (_ZNK3art6Thread4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMap+75)
>> F art : art/runtime/runtime.cc:424] native: #03 pc 0053c8d3
>> /system/lib/libart.so
>> (_ZNK3art10AbortState10DumpThreadERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEPNS_6ThreadE+67)
>> F art : art/runtime/runtime.cc:424] native: #04 pc 0053c6a7
>> /system/lib/libart.so
>> (_ZNK3art10AbortState4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+615)
>> F art : art/runtime/runtime.cc:424] native: #05 pc 0052cc0b
>> /system/lib/libart.so (_ZN3art7Runtime5AbortEPKc+155)
>> F art : art/runtime/runtime.cc:424] native: #06 pc 0011def3
>> /system/lib/libart.so (_ZN3art10LogMessageD1Ev+1939)
>> F art : art/runtime/runtime.cc:424] native: #07 pc 0052c679
>> /system/lib/libart.so (_ZN3art7Runtime19DetachCurrentThreadEv+377)
>> F art : art/runtime/runtime.cc:424] native: #08 pc 003a1d85
>> /system/lib/libart.so (_ZN3art3JII19DetachCurrentThreadEP7_JavaVM+69)
>> F art : art/runtime/runtime.cc:424] native: #09 pc 0013572d
>> /data/app/com.domain.myapplication-2/lib/x86/libMyapplication.so
>> (_ZN14AndroidSharing12isMyFuncEv+109)
>> F art : art/runtime/runtime.cc:424] native: #10 pc 00099f30
>> /data/app/com.domain.myapplication-2/lib/x86/libMyapplication.so
>> (_ZN12GPreferences19check_if_myfuncEv+48)
>> F art : art/runtime/runtime.cc:424] native: #11 pc 00074d09
>> /data/app/com.domain.myapplication-2/lib/x86/libMyapplication.so
>> (_ZN8TextEditC1EP7QWidget+2377)
>> F art : art/runtime/runtime.cc:424] native: #12 pc 00051b7b
>> /data/app/com.domain.myapplication-2/lib/x86/libMyapplication.so
>> (main+747)
>> F art : art/runtime/runtime.cc:424] at
>> org.qtproject.qt5.android.QtNative$6.run(QtNative.java:359)
>> F art : art/runtime/runtime.cc:424] at
>> org.qtproject.qt5.android.QtThread$1.run(QtThread.java:61)
>> F art : art/runtime/runtime.cc:424] at java.lang.Thread.run(Thread.java:761)
>> F art : art/runtime/runtime.cc:424] Dumping all threads without
>> appropriate locks held: thread list lock mutator lock
>> F art : art/runtime/runtime.cc:424] All threads:
>>
>> F art : art/runtime/runtime.cc:424] DALVIK THREADS (14):
>>
>> F art : art/runtime/runtime.cc:424] "qtMainLoopThread" prio=5 tid=11 Runnable
>> F art : art/runtime/runtime.cc:424] | sysTid=6741 nice=0 cgrp=default
>> sched=0/0 handle=0xf07bc920
>> F art : art/runtime/runtime.cc:424] | state=R schedstat=( 92273427
>> 100558772 70 ) utm=6 stm=2 core=0 HZ=100
>> F art : art/runtime/runtime.cc:424] | stack=0xf06ba000-0xf06bc000
>> stackSize=1038KB
>> F art : art/runtime/runtime.cc:424] | held mutexes= "abort lock"
>> "mutator lock"(shared held)
>>
>> F art : art/runtime/runtime.cc:424] native: #00 pc 0058848e
>> /system/lib/libart.so
>> (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiP12BacktraceMapPKcPNS_9ArtMethodEPv+238)
>> F art : art/runtime/runtime.cc:424] native: #01 pc 00553ebe
>> /system/lib/libart.so
>> (_ZNK3art6Thread9DumpStackERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMap+526)
>> F art : art/runtime/runtime.cc:424] native: #02 pc 00550ebb
>> /system/lib/libart.so
>> (_ZNK3art6Thread4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMap+75)
>> F art : art/runtime/runtime.cc:424] native: #03 pc 00570d44
>> /system/lib/libart.so (_ZN3art14DumpCheckpoint3RunEPNS_6ThreadE+1092)
>> F art : art/runtime/runtime.cc:424] native: #04 pc 00566d8e
>> /system/lib/libart.so
>> (_ZN3art10ThreadList13RunCheckpointEPNS_7ClosureE+590)
>> F art : art/runtime/runtime.cc:424] native: #05 pc 00566902
>> /system/lib/libart.so
>> (_ZN3art10ThreadList4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEb+962)
>> F art : art/runtime/runtime.cc:424] native: #06 pc 0053cb28
>> /system/lib/libart.so
>> (_ZNK3art10AbortState14DumpAllThreadsERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEPNS_6ThreadE+424)
>> F art : art/runtime/runtime.cc:424] native: #07 pc 0053c876
>> /system/lib/libart.so
>> (_ZNK3art10AbortState4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+1078)
>> F art : art/runtime/runtime.cc:424] native: #08 pc 0052cc0b
>> /system/lib/libart.so (_ZN3art7Runtime5AbortEPKc+155)
>> F art : art/runtime/runtime.cc:424] native: #09 pc 0011def3
>> /system/lib/libart.so (_ZN3art10LogMessageD1Ev+1939)
>> F art : art/runtime/runtime.cc:424] native: #10 pc 0052c679
>> /system/lib/libart.so (_ZN3art7Runtime19DetachCurrentThreadEv+377)
>> F art : art/runtime/runtime.cc:424] native: #11 pc 003a1d85
>> /system/lib/libart.so (_ZN3art3JII19DetachCurrentThreadEP7_JavaVM+69)
>> F art : art/runtime/runtime.cc:424] native: #12 pc 0013572d
>> /data/app/com.domain.myapplication-2/lib/x86/libMyapplication.so
>> (_ZN14AndroidSharing12isMyFuncEv+109)
>> F art : art/runtime/runtime.cc:424] native: #13 pc 00099f30
>> /data/app/com.domain.myapplication-2/lib/x86/libMyapplication.so
>> (_ZN12GPreferences19check_if_myfuncEv+48)
>> F art : art/runtime/runtime.cc:424] native: #14 pc 00074d09
>> /data/app/com.domain.myapplication-2/lib/x86/libMyapplication.so
>> (_ZN8TextEditC1EP7QWidget+2377)
>> F art : art/runtime/runtime.cc:424] native: #15 pc 00051b7b
>> /data/app/com.domain.myapplication-2/lib/x86/libMyapplication.so
>> (main+747)
>> F art : art/runtime/runtime.cc:424] native: #16 pc 0001ca00
>> /data/data/com.domain.myapplication/qt-reserved-files/plugins/platforms/android/libqtforandroid.so
>> (???)
>> F art : art/runtime/runtime.cc:424] native: #17 pc 0003bef6
>> /data/app/com.domain.myapplication-2/oat/x86/base.odex
>> (Java_org_qtproject_qt5_android_QtNative_startQtApplication__+98)
>> F art : art/runtime/runtime.cc:424] at
>> org.qtproject.qt5.android.QtNative.startQtApplication(Native method)
>> F art : art/runtime/runtime.cc:424] at
>> org.qtproject.qt5.android.QtNative$6.run(QtNative.java:359)
>> F art : art/runtime/runtime.cc:424] at
>> org.qtproject.qt5.android.QtThread$1.run(QtThread.java:61)
>> F art : art/runtime/runtime.cc:424] at java.lang.Thread.run(Thread.java:761)
>> F art : art/runtime/runtime.cc:424]
>> F art : art/runtime/runtime.cc:424] "Jit thread pool worker thread 0"
>> prio=5 tid=2 Runnable (still starting up)
>> F art : art/runtime/runtime.cc:424] | group="" sCount=0 dsCount=0
>> obj=0x0 self=0xe9c08000
>>
>>
>> Thanks in advance
>>
>> Kind regards,
>> Robert
>> _______________________________________________
>> Interest mailing list
>> Interest at qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/interest



More information about the Interest mailing list