Details
-
Bug
-
Resolution: Done
-
P1: Critical
-
5.11.1
-
None
-
9478053838ae2d950b162c2b93a2a400c82d9bf7
Description
Hello, I was trying to restart a qml application to apply a style change to quickcontrols2. Calling qmlClearTypeRegistrations results in a crash most of times:
(gdb) backtrace #0 0x0000000000000045 in ?? () #1 0x00007ffff7bc694b in QScopedPointerDeleter<QQuickProxyTheme>::cleanup (pointer=<optimized out>) at /usr/include/qt5/QtCore/qscopedpointer.h:52 #2 QScopedPointer<QQuickProxyTheme, QScopedPointerDeleter<QQuickProxyTheme> >::~QScopedPointer (this=0x7fffbc02d1f8, __in_chrg=<optimized out>) at /usr/include/qt5/QtCore/qscopedpointer.h:107 #3 QQuickStylePlugin::~QQuickStylePlugin (this=0x7fffbc02d1e0, __in_chrg=<optimized out>) at qquickstyleplugin.cpp:49 #4 0x00007fffd6de3845 in QtQuickControls2Plugin::~QtQuickControls2Plugin (this=0x7fffbc02d1e0, __in_chrg=<optimized out>) at qtquickcontrols2plugin.cpp:95 #5 QtQuickControls2Plugin::~QtQuickControls2Plugin (this=0x7fffbc02d1e0, __in_chrg=<optimized out>) at qtquickcontrols2plugin.cpp:96 #6 0x00007ffff5736a66 in QLibraryPrivate::unload(QLibraryPrivate::UnloadFlag) () at /usr/include/c++/8/bits/atomic_base.h:390 #7 0x00007ffff572b15b in QPluginLoader::unload (this=0x7fffbc001f40) at plugin/qpluginloader.cpp:263 #8 0x00007ffff61e33e1 in ?? () from /usr/lib64/libQt5Qml.so.5 #9 0x00007ffff61905b9 in qmlClearTypeRegistrations() () from /usr/lib64/libQt5Qml.so.5 #10 0x000000000040116a in main (argc=1, argv=0x7fffffffdb68) at ../../StyleBug/main.cpp:10
Example code:
main.cpp
#include <QApplication> #include <QQmlApplicationEngine> #include <QQuickStyle> int main(int argc, char *argv[]) { int res; int style = -1; do { qmlClearTypeRegistrations(); QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QApplication app(argc, argv); if (style != -1) QQuickStyle::setStyle(QQuickStyle::availableStyles()[style]); QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); if (engine.rootObjects().isEmpty()) return -1; res = app.exec(); style += res; } while (res > 0); return res; }
main.qml
import QtQuick 2.9 import QtQuick.Controls 2.2 ApplicationWindow { visible: true width: 640 height: 480 title: qsTr("Hello World") Button { text: "Change Style" onClicked: Qt.exit(1); } }
Note that qmlClearTypeRegistrations() doesn't crash when changing from org.style.desktop to another style (or itself) and the application successfully restarts.
Attachments
Issue Links
- relates to
-
QTBUG-71387 Crash after calling qmlClearTypeRegistrations()
- Closed