Hello, I am working on a project recently migrated to Qt 5.3.0 (previously it was running on Qt 5.2.1).
My project is based on a QQuickView object being filled with some QML files, depending on some command I receive from a communication protocol…
Since I was on Qt 5.2.1 the system worked fine and was rock solid: never a problem. Now with Qt 5.3.0 if I close the QQuickView window the process crashes with the following output:
glibc detected *** /home/morix/devel/aesys/VLED/build/bin/VLED: free(): invalid pointer: 0×091ec694 ***
=== Backtrace: =====
/lib/i386-linux-gnu/libc.so.6(0×75ee2)[0xb5c1fee2]
/usr/lib/i386-linux-gnu/libstdc+.so.6(ZdlPv+0×1f)[0xb5e1b51f]
/opt/Qt/5.3/gcc/lib/libQt5Qml.so.5(_ZN21QQmlImageProviderBaseD0Ev+0×24)[0xb7136110]
/opt/Qt/5.3/gcc/lib/libQt5Qml.so.5(+0×211f59)[0xb713cf59]
/opt/Qt/5.3/gcc/lib/libQt5Qml.so.5(+0×2138b3)[0xb713e8b3]
/opt/Qt/5.3/gcc/lib/libQt5Core.so.5(_ZN9QHashData11free_helperEPFvPNS_4NodeEE+0×4a)[0xb5f40e7a]
/opt/Qt/5.3/gcc/lib/libQt5Qml.so.5(_ZN17QQmlEnginePrivateD1Ev+0×8ab)[0xb71378c5]
/opt/Qt/5.3/gcc/lib/libQt5Qml.so.5(_ZN17QQmlEnginePrivateD0Ev+0×1c)[0xb7137a7c]
/opt/Qt/5.3/gcc/lib/libQt5Core.so.5(_ZN7QObjectD1Ev+0×6a1)[0xb6173031]
/opt/Qt/5.3/gcc/lib/libQt5Qml.so.5(_ZN9QJSEngineD1Ev+0×36)[0xb70352b6]
/opt/Qt/5.3/gcc/lib/libQt5Qml.so.5(_ZN10QQmlEngineD1Ev+0xf0)[0xb71398fe]
/opt/Qt/5.3/gcc/lib/libQt5Qml.so.5(_ZN10QQmlEngineD0Ev+0×1c)[0xb71399e2]
/opt/Qt/5.3/gcc/lib/libQt5Core.so.5(_ZN14QObjectPrivate14deleteChildrenEv+0×6c)[0xb616e4ac]
/opt/Qt/5.3/gcc/lib/libQt5Core.so.5(_ZN7QObjectD1Ev+0×661)[0xb6172ff1]
/opt/Qt/5.3/gcc/lib/libQt5Gui.so.5(_ZN7QWindowD2Ev+0×6d)[0xb646a7bd]
/opt/Qt/5.3/gcc/lib/libQt5Quick.so.5(_ZN12QQuickWindowD1Ev+0xd9)[0xb74878e9]
/opt/Qt/5.3/gcc/lib/libQt5Quick.so.5(_ZN10QQuickViewD1Ev+0×9a)[0xb753925a]
/home/morix/devel/aesys/VLED/build/bin/VLED[0×8059bbe]
/home/morix/devel/aesys/VLED/build/bin/VLED[0×8059c8f]
/home/morix/devel/aesys/VLED/build/bin/VLED[0×8051368]
/home/morix/devel/aesys/VLED/build/bin/VLED[0×804d429]
/lib/i386-linux-gnu/libc.so.6(_libc_start_main+0xf3)[0xb5bc34d3]
/home/morix/devel/aesys/VLED/build/bin/VLED[0×804d2b1]
(VLED is the name of my project in the output here above).
It seems that some free() call in QQmlImageProviderBase is working on a unvalid pointer…
Please consider that in my project I make use of a QQmlImageProviderBase-derived class to provide some “live” pixmaps to QML… but I don’t think the problem is there: the code is very simple (simply returns some pixmaps previously inserted in a local collection) and furthermore with Qt 5.2.1 it works fine…
I am working on Ubuntu Linux 12.04 LTS… but the problem is the same if I cross-compile the application for BeagleBone Black / TI AM335x… so it seems not to be an “environment-related” problem but rather a Qt problem…
Does somebody else is experiencing such a problem with Qt 5.3.0? Any workaround?
UPDATE
I created a very simply project for reproducing the issue: it can be found here [drive.google.com]
Please try it on your own and let me know if you have the same issue and if you find a valid workaround…
↧