-
Bug
-
Resolution: Done
-
P2: Important
-
5.15
-
68199cec0e47ff15e8e9b2708441e46cc7c48b84 (qt/qtdeclarative/5.15) b953bd67d4134b9af3e554a0287a462ddf2de5f7 (qt/qtdeclarative/dev)
I used Qt 5.15 (git branch) compiled with "./configure -sanitize address -sanitize undefined" (with gcc/linux/amd64), when I run "hello world" QML with virtual keyboard created via qtcreator I got:
/home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1572:86: runtime error: member call on null pointer of type 'struct QQmlPropertyCache'
/home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1572:86: runtime error: member access within null pointer of type 'struct QQmlPropertyCache'
AddressSanitizer:DEADLYSIGNAL
=================================================================
==3033826==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7f30552d9868 bp 0x7ffda00acda0 sp 0x7ffda00ac6e0 T0)
==3033826==The signal is caused by a READ memory access.
==3033826==Hint: address points to the zero page.
#0 0x7f30552d9868 in QQmlObjectCreator::populateInstance(int, QObject*, QObject*, QQmlPropertyData const*) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1572
#1 0x7f30552d0280 in QQmlObjectCreator::createInstance(int, QObject*, bool) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1348
#2 0x7f30552aaf7f in QQmlObjectCreator::create(int, QObject*, QQmlInstantiationInterrupt*, int) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:204
#3 0x7f30552cc0da in QQmlObjectCreator::createInstance(int, QObject*, bool) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1231
#4 0x7f30552bf8b5 in QQmlObjectCreator::setPropertyBinding(QQmlPropertyData const*, QV4::CompiledData::Binding const*) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:847
#5 0x7f30552bc1fa in QQmlObjectCreator::setupBindings(bool) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:798
#6 0x7f30552d8afb in QQmlObjectCreator::populateInstance(int, QObject*, QObject*, QQmlPropertyData const*) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1555
#7 0x7f30552d0280 in QQmlObjectCreator::createInstance(int, QObject*, bool) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1348
#8 0x7f30552bf8b5 in QQmlObjectCreator::setPropertyBinding(QQmlPropertyData const*, QV4::CompiledData::Binding const*) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:847
#9 0x7f30552bc1fa in QQmlObjectCreator::setupBindings(bool) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:798
#10 0x7f30552d8afb in QQmlObjectCreator::populateInstance(int, QObject*, QObject*, QQmlPropertyData const*) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1555
#11 0x7f30552d0280 in QQmlObjectCreator::createInstance(int, QObject*, bool) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1348
#12 0x7f30552aaf7f in QQmlObjectCreator::create(int, QObject*, QQmlInstantiationInterrupt*, int) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:204
#13 0x7f30552cc0da in QQmlObjectCreator::createInstance(int, QObject*, bool) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1231
#14 0x7f30552bf8b5 in QQmlObjectCreator::setPropertyBinding(QQmlPropertyData const*, QV4::CompiledData::Binding const*) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:847
#15 0x7f30552bc1fa in QQmlObjectCreator::setupBindings(bool) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:798
#16 0x7f30552d8afb in QQmlObjectCreator::populateInstance(int, QObject*, QObject*, QQmlPropertyData const*) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1555
#17 0x7f30552d0280 in QQmlObjectCreator::createInstance(int, QObject*, bool) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1348
#18 0x7f30552aaf7f in QQmlObjectCreator::create(int, QObject*, QQmlInstantiationInterrupt*, int) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:204
#19 0x7f30552cc0da in QQmlObjectCreator::createInstance(int, QObject*, bool) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1231
#20 0x7f30552bf8b5 in QQmlObjectCreator::setPropertyBinding(QQmlPropertyData const*, QV4::CompiledData::Binding const*) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:847
#21 0x7f30552bc1fa in QQmlObjectCreator::setupBindings(bool) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:798
#22 0x7f30552d8afb in QQmlObjectCreator::populateInstance(int, QObject*, QObject*, QQmlPropertyData const*) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1555
#23 0x7f30552d0280 in QQmlObjectCreator::createInstance(int, QObject*, bool) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1348
#24 0x7f30552aaf7f in QQmlObjectCreator::create(int, QObject*, QQmlInstantiationInterrupt*, int) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:204
#25 0x7f3054f9717b in QQmlComponentPrivate::beginCreate(QQmlContextData*) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:934
#26 0x7f3054f95d68 in QQmlComponent::beginCreate(QQmlContext*) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:886
#27 0x7f3054f8b726 in QQmlComponentPrivate::doBeginCreate(QQmlComponent*, QQmlContext*) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:371
#28 0x7f3054f94eb5 in QQmlComponent::create(QQmlContext*) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:818
#29 0x7f305526d906 in QQmlApplicationEnginePrivate::finishLoad(QQmlComponent*) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlapplicationengine.cpp:148
#30 0x7f305526cc01 in QQmlApplicationEnginePrivate::startLoad(QUrl const&, QByteArray const&, bool) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlapplicationengine.cpp:132
#31 0x7f305526f09d in QQmlApplicationEngine::load(QUrl const&) /home/evgeniy/bigdisk1/projects/cpp-infra/qt5/qtdeclarative/src/qml/qml/qqmlapplicationengine.cpp:279
#32 0x55d8583fbaac in main ../main.cpp:19
#33 0x7f3046fae001 in __libc_start_main (/usr/lib/libc.so.6+0x27001)
#34 0x55d8583fbf3d in _start (/home/evgeniy/bigdisk1/projects/study/qt/qml/virt_keyb_hello_world/build-asan/virt_keyb_hello_world+0x5f3d)
Using debugger I can see that in qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1572
QQmlPropertyData *const targetProperty = targetDData->propertyCache->property(coreIndex);
targetDData not nullptr, but targetDData->propertyCache is nullptr