Details
-
Bug
-
Resolution: Done
-
P2: Important
-
None
-
5.15.1
-
None
-
-
2b4a581f34854d9c0bb8d53626d929abd0661bd8 (qt/qtbase/dev) 1b1ce981d485cdf88d19e51707fd1a95d19d075f (qt/qtbase/5.15)
Description
My Qt application triggers a crash when run in Android 6. Relevant part of the stack trace:
F art : art/runtime/java_vm_ext.cc:410] JNI DETECTED ERROR IN APPLICATION: JNI NewString called with pending exception java.lang.NoSuchMethodError: No virtual method putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; in class Ljava/util/HashMap; or its super classes (declaration of 'java.util.HashMap' appears in /system/framework/core-libart.jar) F art : art/runtime/java_vm_ext.cc:410] at long org.qtproject.qt5.android.QtNative.getSize(android.content.Context, java.lang.String) (QtNative.java:270) F art : art/runtime/java_vm_ext.cc:410] at void org.qtproject.qt5.android.QtNative.startQtApplication() (QtNative.java:-2) F art : art/runtime/java_vm_ext.cc:410] at void org.qtproject.qt5.android.QtNative$7.run() (QtNative.java:611) F art : art/runtime/java_vm_ext.cc:410] at void org.qtproject.qt5.android.QtThread$1.run() (QtThread.java:61) F art : art/runtime/java_vm_ext.cc:410] at void java.lang.Thread.run() (Thread.java:818) F art : art/runtime/java_vm_ext.cc:410] F art : art/runtime/java_vm_ext.cc:410] in call to NewString F art : art/runtime/java_vm_ext.cc:410] from void org.qtproject.qt5.android.QtNative.startQtApplication() F art : art/runtime/java_vm_ext.cc:410] "qtMainLoopThread" prio=5 tid=10 Runnable F art : art/runtime/java_vm_ext.cc:410] | group="main" sCount=0 dsCount=0 obj=0x12d22ee0 self=0xacc35d00 F art : art/runtime/java_vm_ext.cc:410] | sysTid=2794 nice=0 cgrp=default sched=0/0 handle=0xaa8bf930 F art : art/runtime/java_vm_ext.cc:410] | state=R schedstat=( 0 0 0 ) utm=80 stm=12 core=0 HZ=100 F art : art/runtime/java_vm_ext.cc:410] | stack=0xaa7bd000-0xaa7bf000 stackSize=1038KB F art : art/runtime/java_vm_ext.cc:410] | held mutexes= "mutator lock"(shared held) F art : art/runtime/java_vm_ext.cc:410] native: #00 pc 0058bd02 /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, char const*, art::ArtMethod*, void*)+226) F art : art/runtime/java_vm_ext.cc:410] native: #01 pc 0055194e /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const+286) F art : art/runtime/java_vm_ext.cc:410] native: #02 pc 003a482f /system/lib/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1247) F art : art/runtime/java_vm_ext.cc:410] native: #03 pc 003a5eac /system/lib/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, char*)+116) F art : art/runtime/java_vm_ext.cc:410] native: #04 pc 00163a10 /system/lib/libart.so (art::ScopedCheck::AbortF(char const*, ...)+62) F art : art/runtime/java_vm_ext.cc:410] native: #05 pc 0016d9d2 /system/lib/libart.so (art::ScopedCheck::CheckThread(_JNIEnv*)+1890) F art : art/runtime/java_vm_ext.cc:410] native: #06 pc 0016e4e1 /system/lib/libart.so (art::ScopedCheck::Check(art::ScopedObjectAccess&, bool, char const*, art::JniValueType*) (.constprop.114)+1489) F art : art/runtime/java_vm_ext.cc:410] native: #07 pc 0017c0ec /system/lib/libart.so (art::CheckJNI::NewString(_JNIEnv*, unsigned short const*, int)+620) F art : art/runtime/java_vm_ext.cc:410] native: #08 pc 00249fed /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Core_x86.so (QJNIObjectPrivate::fromString(QString const&)+81) F art : art/runtime/java_vm_ext.cc:410] native: #09 pc 0001f2cb /data/app/de.mzmn.mzmn-1/lib/x86/libplugins_platforms_qtforandroid_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #10 pc 0016bd98 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Core_x86.so (QFileDevice::size() const+64) F art : art/runtime/java_vm_ext.cc:410] native: #11 pc 0016acbc /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Core_x86.so (QFile::size() const+32) F art : art/runtime/java_vm_ext.cc:410] native: #12 pc 0001c2c2 /data/app/de.mzmn.mzmn-1/lib/x86/libKF5Archive_x86.so (KZip::openArchive(QFlags<QIODevice::OpenModeFlag>)+4066) F art : art/runtime/java_vm_ext.cc:410] native: #13 pc 0000ad90 /data/app/de.mzmn.mzmn-1/lib/x86/libKF5Archive_x86.so (KArchive::open(QFlags<QIODevice::OpenModeFlag>)+288) F art : art/runtime/java_vm_ext.cc:410] native: #14 pc 0000f187 /data/app/de.mzmn.mzmn-1/lib/x86/libmzmn_x86.so (Story::setSource(QUrl const&)+663) F art : art/runtime/java_vm_ext.cc:410] native: #15 pc 00018557 /data/app/de.mzmn.mzmn-1/lib/x86/libmzmn_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #16 pc 00018b04 /data/app/de.mzmn.mzmn-1/lib/x86/libmzmn_x86.so (Story::qt_metacall(QMetaObject::Call, int, void**)+340) F art : art/runtime/java_vm_ext.cc:410] native: #17 pc 001fdb99 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Core_x86.so (QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**)+73) F art : art/runtime/java_vm_ext.cc:410] native: #18 pc 002a675a /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QQmlPropertyPrivate::write(QObject*, QQmlPropertyData const&, QVariant const&, QQmlContextData*, QFlags<QQmlPropertyData::WriteFlag>)+3210) F art : art/runtime/java_vm_ext.cc:410] native: #19 pc 001b0ad0 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QV4::QObjectWrapper::setProperty(QV4::ExecutionEngine*, QObject*, QQmlPropertyData*, QV4::Value const&)+3568) F art : art/runtime/java_vm_ext.cc:410] native: #20 pc 001b2174 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QV4::QObjectWrapper::virtualPut(QV4::Managed*, QV4::PropertyKey, QV4::Value const&, QV4::Value*)+884) F art : art/runtime/java_vm_ext.cc:410] native: #21 pc 002ad96c /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QQmlComponentPrivate::setInitialProperties(QV4::ExecutionEngine*, QV4::QmlContext*, QV4::Value const&, QV4::Value const&, RequiredProperties&, QObject*)+1356) F art : art/runtime/java_vm_ext.cc:410] native: #22 pc 000f407d /data/app/de.mzmn.mzmn-1/lib/x86/libQt5QuickTemplates2_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #23 pc 000f41ac /data/app/de.mzmn.mzmn-1/lib/x86/libQt5QuickTemplates2_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #24 pc 000f4766 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5QuickTemplates2_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #25 pc 002b1030 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QQmlIncubatorPrivate::incubate(QQmlInstantiationInterrupt&)+1584) F art : art/runtime/java_vm_ext.cc:410] native: #26 pc 002b089f /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QQmlEnginePrivate::incubate(QQmlIncubator&, QQmlContextData*)+431) F art : art/runtime/java_vm_ext.cc:410] native: #27 pc 002ad250 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QQmlComponent::create(QQmlIncubator&, QQmlContext*, QQmlContext*)+400) F art : art/runtime/java_vm_ext.cc:410] native: #28 pc 000f3c68 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5QuickTemplates2_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #29 pc 000f9a62 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5QuickTemplates2_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #30 pc 000f5c5b /data/app/de.mzmn.mzmn-1/lib/x86/libQt5QuickTemplates2_x86.so (QQuickStackView::push(QQmlV4Function*)+1227) F art : art/runtime/java_vm_ext.cc:410] native: #31 pc 00126279 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5QuickTemplates2_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #32 pc 001266cf /data/app/de.mzmn.mzmn-1/lib/x86/libQt5QuickTemplates2_x86.so (QQuickStackView::qt_metacall(QMetaObject::Call, int, void**)+127) F art : art/runtime/java_vm_ext.cc:410] native: #33 pc 0028ddf2 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QQmlVMEMetaObject::metaCall(QObject*, QMetaObject::Call, int, void**)+546) F art : art/runtime/java_vm_ext.cc:410] native: #34 pc 001fdb89 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Core_x86.so (QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**)+57) F art : art/runtime/java_vm_ext.cc:410] native: #35 pc 002e8c26 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #36 pc 001b3ebe /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QV4::QObjectMethod::callInternal(QV4::Value const*, QV4::Value const*, int) const+1230) F art : art/runtime/java_vm_ext.cc:410] native: #37 pc 001b39e6 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QV4::QObjectMethod::virtualCall(QV4::FunctionObject const*, QV4::Value const*, QV4::Value const*, int)+38) F art : art/runtime/java_vm_ext.cc:410] native: #38 pc 001d3918 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #39 pc 001d2201 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #40 pc 00166da2 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QV4::Function::call(QV4::Value const*, QV4::Value const*, int, QV4::ExecutionContext const*)+530) F art : art/runtime/java_vm_ext.cc:410] native: #41 pc 003056a5 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QQmlJavaScriptExpression::evaluate(QV4::CallData*, bool*)+629) F art : art/runtime/java_vm_ext.cc:410] native: #42 pc 002b7936 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QQmlBoundSignalExpression::evaluate(void**)+1046) F art : art/runtime/java_vm_ext.cc:410] native: #43 pc 002b809a /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #44 pc 002e8833 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**)+531) F art : art/runtime/java_vm_ext.cc:410] native: #45 pc 00294a81 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QQmlData::signalEmitted(QAbstractDeclarativeData*, QObject*, int, void**)+913) F art : art/runtime/java_vm_ext.cc:410] native: #46 pc 0021ebbf /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Core_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #47 pc 0021b474 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Core_x86.so (QMetaObject::activate(QObject*, int, int, void**)+54) F art : art/runtime/java_vm_ext.cc:410] native: #48 pc 0028df8b /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QQmlVMEMetaObject::metaCall(QObject*, QMetaObject::Call, int, void**)+955) F art : art/runtime/java_vm_ext.cc:410] native: #49 pc 001fdb89 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Core_x86.so (QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**)+57) F art : art/runtime/java_vm_ext.cc:410] native: #50 pc 002e8c26 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #51 pc 001b7216 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #52 pc 001b4684 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #53 pc 001b3eff /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QV4::QObjectMethod::callInternal(QV4::Value const*, QV4::Value const*, int) const+1295) F art : art/runtime/java_vm_ext.cc:410] native: #54 pc 001b39e6 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QV4::QObjectMethod::virtualCall(QV4::FunctionObject const*, QV4::Value const*, QV4::Value const*, int)+38) F art : art/runtime/java_vm_ext.cc:410] native: #55 pc 001ebf4e /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QV4::Runtime::CallQmlContextPropertyLookup::call(QV4::ExecutionEngine*, unsigned int, QV4::Value*, int)+158) F art : art/runtime/java_vm_ext.cc:410] native: #56 pc 001d3fca /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #57 pc 001d2201 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #58 pc 00166da2 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QV4::Function::call(QV4::Value const*, QV4::Value const*, int, QV4::ExecutionContext const*)+530) F art : art/runtime/java_vm_ext.cc:410] native: #59 pc 003056a5 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QQmlJavaScriptExpression::evaluate(QV4::CallData*, bool*)+629) F art : art/runtime/java_vm_ext.cc:410] native: #60 pc 002b7936 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QQmlBoundSignalExpression::evaluate(void**)+1046) F art : art/runtime/java_vm_ext.cc:410] native: #61 pc 002b809a /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (???) F art : art/runtime/java_vm_ext.cc:410] native: #62 pc 002e8833 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**)+531) F art : art/runtime/java_vm_ext.cc:410] native: #63 pc 00294a81 /data/app/de.mzmn.mzmn-1/lib/x86/libQt5Qml_x86.so (QQmlData::signalEmitted(QAbstractDeclarativeData*, QObject*, int, void**)+913) F art : art/runtime/java_vm_ext.cc:410] at org.qtproject.qt5.android.QtNative.startQtApplication(Native method) F art : art/runtime/java_vm_ext.cc:410] at org.qtproject.qt5.android.QtNative$7.run(QtNative.java:611) F art : art/runtime/java_vm_ext.cc:410] at org.qtproject.qt5.android.QtThread$1.run(QtThread.java:61) F art : art/runtime/java_vm_ext.cc:410] at java.lang.Thread.run(Thread.java:818) F art : art/runtime/java_vm_ext.cc:410]
This has been tested in an AVD running Android 6 x86. Android 10 works without problems.
Does the HashMap implementation in Android 6 not support
`putIfAbsent()`? In any case, the documentation for Qt 5.15 state Android 5.0 as the minimum requirement, so this should work.