- 
    Bug 
- 
    Resolution: Cannot Reproduce
- 
    P2: Important 
- 
    5.12
After applying https://codereview.qt-project.org/#/c/259569/ to qtquickcontrols2 and running the test, I get the following crash:
SIGILL Illegal instruction
1 QRgba64::fromRgba64 qrgba64.h 74 0xa4b1fdba 2 QRgba64::fromRgba64 qrgba64.h 79 0xa4b1fe78 3 qRgba64 qrgba64.h 194 0xa4c3c5fc 4 get_hex_rgb qcolor.cpp 114 0xa4ecf6cb 5 get_hex_rgb qcolor.cpp 135 0xa4ed979c 6 QColor::setColorFromString<QStringView> qcolor.cpp 960 0xa4ed9e6a 7 QColor::setNamedColor qcolor.cpp 890 0xa4ed0686 8 QColor::QColor qcolor.h 297 0xa3a1598a 9 QQuickColorProvider::rgbaFromString qquickglobal.cpp 78 0xa3a3a982 10 QQmlStringConverters::rgbaFromString qqmlstringconverters.cpp 106 0xa453b0e3 11 QQmlPropertyValidator::validateLiteralBinding qqmlpropertyvalidator.cpp 414 0xa419503b 12 QQmlPropertyValidator::validateObject qqmlpropertyvalidator.cpp 262 0xa4193339 13 QQmlPropertyValidator::validateObject qqmlpropertyvalidator.cpp 206 0xa4192867 14 QQmlPropertyValidator::validateObject qqmlpropertyvalidator.cpp 206 0xa4192867 15 QQmlPropertyValidator::validate qqmlpropertyvalidator.cpp 61 0xa4190fa7 16 QQmlTypeData::done qqmltypeloader.cpp 2381 0xa454b31a 17 QQmlDataBlob::tryDone qqmltypeloader.cpp 675 0xa453e323 18 QQmlTypeLoader::setData qqmltypeloader.cpp 1312 0xa4541444 19 QQmlTypeLoader::setData qqmltypeloader.cpp 1292 0xa45410dd 20 QQmlTypeLoader::loadThread qqmltypeloader.cpp 1162 0xa45404be 21 PlainLoader::loadThread qqmltypeloader.cpp 1007 0xa4564eb1 22 QQmlTypeLoader::doLoad<PlainLoader> qqmltypeloader.cpp 1066 0xa4557aae 23 QQmlTypeLoader::load qqmltypeloader.cpp 1098 0xa4540b1a 24 QQmlTypeLoader::getType qqmltypeloader.cpp 1697 0xa45459c9 25 QQmlTypeData::resolveTypes qqmltypeloader.cpp 2745 0xa455003e 26 QQmlTypeData::allDependenciesDone qqmltypeloader.cpp 2621 0xa454f355 27 QQmlTypeLoader::setData qqmltypeloader.cpp 1305 0xa45413eb 28 QQmlTypeLoader::setData qqmltypeloader.cpp 1292 0xa45410dd 29 QQmlTypeLoader::loadThread qqmltypeloader.cpp 1162 0xa45404be 30 QQmlTypeLoaderThread::loadThread qqmltypeloader.cpp 905 0xa453f751 31 void QQmlThread::callMethodInThread<QQmlDataBlob *, QQmlDataBlob *, QQmlTypeLoaderThread>(void (QQmlTypeLoaderThread:: *)(QQmlDataBlob *), QQmlDataBlob * const&)::I::call(QQmlThread *) qqmlthread_p.h 164 0xa4563ae7 32 QQmlThreadPrivate::threadEvent qqmlthread.cpp 197 0xa46456ca 33 QQmlThreadPrivate::event qqmlthread.cpp 135 0xa46455b9 34 QCoreApplicationPrivate::notify_helper qcoreapplication.cpp 1220 0xa576978c 35 doNotify qcoreapplication.cpp 1150 0xa57690db 36 QCoreApplication::notify qcoreapplication.cpp 1136 0xa5769220 37 QGuiApplication::notify qguiapplication.cpp 1791 0xa4b6f952 38 QCoreApplication::notifyInternal2 qcoreapplication.cpp 1060 0xa5768f79 39 QCoreApplication::sendEvent qcoreapplication.cpp 1450 0xa576a057 40 QCoreApplicationPrivate::sendPostedEvents qcoreapplication.cpp 1799 0xa576adc7 41 QEventDispatcherUNIX::processEvents qeventdispatcher_unix.cpp 466 0xa58493c3 42 QEventLoop::processEvents qeventloop.cpp 138 0xa5761d01 43 QEventLoop::exec qeventloop.cpp 225 0xa5761fd9 44 QThread::exec qthread.cpp 531 0xa5407090 45 QQmlThreadPrivate::run qqmlthread.cpp 148 0xa46457c6 46 QThreadPrivate::start qthread_unix.cpp 361 0xa540a900 47 __pthread_start(void *) 0xb76a7b49 48 __start_thread 0xb76a2faa 49 __bionic_clone 0xb7699b97
The issue can be reproduced with a simple Qt Quick application:
import QtQuick 2.9 import QtQuick.Window 2.2 Window { visible: true width: 640 height: 480 color: "#353637" }
And an even simpler C++ GUI application:
#include <QGuiApplication> #include <QColor> #include <QDebug> int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); qDebug() << QColor("#353637"); return 0; }
The disassembly (the debugger is pointing to 0xa4a9ddba):
        73 [1]	    {
0xa4a9dda0                  55                 push   %ebp
0xa4a9dda1  <+    1>        89 e5              mov    %esp,%ebp
0xa4a9dda3  <+    3>        83 e4 f8           and    $0xfffffff8,%esp
0xa4a9dda6  <+    6>        83 ec 18           sub    $0x18,%esp
0xa4a9dda9  <+    9>        8b 45 08           mov    0x8(%ebp),%eax
0xa4a9ddac  <+   12>        8b 4d 0c           mov    0xc(%ebp),%ecx
0xa4a9ddaf  <+   15>        8b 55 10           mov    0x10(%ebp),%edx
0xa4a9ddb2  <+   18>        89 4c 24 08        mov    %ecx,0x8(%esp)
0xa4a9ddb6  <+   22>        89 54 24 0c        mov    %edx,0xc(%esp)
        74 [1]	        return QRgba64(c);
0xa4a9ddba  <+   26>        c5 fb 10 44 24 08  vmovsd 0x8(%esp),%xmm0
0xa4a9ddc0  <+   32>        c5 fb 11 44 24 10  vmovsd %xmm0,0x10(%esp)
0xa4a9ddc6  <+   38>        8b 4d 08           mov    0x8(%ebp),%ecx
        67 [1]	    explicit Q_ALWAYS_INLINE Q_DECL_CONSTEXPR QRgba64(quint64 c) : rgba(c) { }
0xa4a9ddc9  <+   41>        c5 fb 10 44 24 10  vmovsd 0x10(%esp),%xmm0
0xa4a9ddcf  <+   47>        c5 fb 11 01        vmovsd %xmm0,(%ecx)
        74 [1]	        return QRgba64(c);
0xa4a9ddd3  <+   51>        89 ec              mov    %ebp,%esp
0xa4a9ddd5  <+   53>        5d                 pop    %ebp
0xa4a9ddd6  <+   54>        c2 04 00           ret    $0x4
- relates to
- 
                    QTBUG-73606 tst_cursor in QtQuickControls2 fails on Android -         
- Closed
 
-