Details
-
Bug
-
Resolution: Done
-
P1: Critical
-
5.12.3, 5.13.0 Beta3
-
ea74f0c68cddf706c950d3910cf7b363fe24885b (qt/qtdeclarative/5.12)
Description
In Qt 5.13 beta2 and Qt 5.12.3, when accessing a non-existing property of a QtObject e.g. from within a repeater, the application crashes. Up to Qt 5.12.2, this code works and accessing the non-existing property simply returns "undefined" and does not crash.
When using the same approach with a ListModel (replace the list<QtObject> with the commented ListModel), no crash occurs.
The use case here are optional properties, with the delegate using a default when the property does not exist.
Find the relevant code below, complete test case is attached.
property list<QtObject> entries: [ QtObject { readonly property color color: "green" }, QtObject { } ] /* ListModel { id: entries ListElement { color: "green" } ListElement { } } */ Row { Repeater { model: entries Rectangle { width: 50 height: 50 color: model.color ? model.color : "red" } } }
Backtrace:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000004
Exception Note: EXC_CORPSE_NOTIFY
Termination Signal: Segmentation fault: 11
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 org.qt-project.QtQml 0x0000000101bde434 QV4::QObjectWrapper::getProperty(QV4::ExecutionEngine*, QObject*, QQmlPropertyData*) + 324
1 org.qt-project.QtQml 0x0000000101be2695 QV4::QObjectWrapper::virtualResolveLookupGetter(QV4::Object const*, QV4::ExecutionEngine*, QV4::Lookup*) + 517
2 org.qt-project.QtQml 0x0000000101bfb9a7 QV4::Moth::VME::interpret(QV4::CppStackFrame*, QV4::ExecutionEngine*, char const*) + 2087
3 org.qt-project.QtQml 0x0000000101bfb05b QV4::Moth::VME::exec(QV4::CppStackFrame*, QV4::ExecutionEngine*) + 139
4 org.qt-project.QtQml 0x0000000101ba35c6 QV4::Function::call(QV4::Value const*, QV4::Value const*, int, QV4::ExecutionContext const*) + 342
5 org.qt-project.QtQml 0x0000000101d1bf65 QQmlJavaScriptExpression::evaluate(QV4::CallData*, bool*) + 597
6 org.qt-project.QtQml 0x0000000101d23fc7 QQmlNonbindingBinding::doUpdate(QQmlJavaScriptExpression::DeleteWatcher const&, QFlags<QQmlPropertyData::WriteFlag>, QV4::Scope&) + 295
7 org.qt-project.QtQml 0x0000000101d220ee QQmlBinding::update(QFlags<QQmlPropertyData::WriteFlag>) + 318
8 org.qt-project.QtQml 0x0000000101d35396 QQmlObjectCreator::finalize(QQmlInstantiationInterrupt&) + 326
9 org.qt-project.QtQml 0x0000000101cbd02f QQmlIncubatorPrivate::incubate(QQmlInstantiationInterrupt&) + 207
10 org.qt-project.QtQml 0x0000000101cbce0f QQmlEnginePrivate::incubate(QQmlIncubator&, QQmlContextData*) + 415
11 org.qt-project.QtQml 0x0000000101d8f327 QQmlDelegateModelPrivate::object(QQmlListCompositor::Group, int, QQmlIncubator::IncubationMode) + 1799
12 org.qt-project.QtQuick 0x00000001013c2a9e QQuickRepeater::regenerate() + 270
13 org.qt-project.QtQuick 0x00000001013c2d82 QQuickRepeater::componentComplete() + 82
14 org.qt-project.QtQml 0x0000000101d35563 QQmlObjectCreator::finalize(QQmlInstantiationInterrupt&) + 787
15 org.qt-project.QtQml 0x0000000101cb9ff9 QQmlComponentPrivate::complete(QQmlEnginePrivate*, QQmlComponentPrivate::ConstructionState*) + 73
16 org.qt-project.QtQml 0x0000000101cb7f66 QQmlComponentPrivate::completeCreate() + 102
17 org.qt-project.QtQml 0x0000000101cb9902 QQmlComponent::create(QQmlContext*) + 114
18 org.qt-project.QtQml 0x0000000101d26257 QQmlApplicationEnginePrivate::finishLoad(QQmlComponent*) + 87
19 org.qt-project.QtQml 0x0000000101d268e2 QQmlApplicationEngine::load(QUrl const&) + 34
20 com.kdab.qtobjectcrash 0x0000000101177b84 main + 260 (main.cpp:17)
21 libdyld.dylib 0x00007fff57b333d5 start + 1
Attachments
Issue Links
- is duplicated by
-
QTBUG-75900 QT 5.12.3 and newer cause sddm to crash with Breeze Theme
- Closed
- resulted in
-
QTBUG-75394 Qt513Beta3: sensor_explorer example crashes
- Closed
For Gerrit Dashboard: QTBUG-75203 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
259240,3 | Don't crash when accessing invalid properties through QObjectWrapper | 5.12 | qt/qtdeclarative | Status: MERGED | +2 | 0 |