Details
-
Bug
-
Resolution: Done
-
P3: Somewhat important
-
5.5.0, 5.5.1
-
None
-
Raspbian Wheezy Raspberry Pi
Linaro GCC 4.8.3
Description
I'm trying to deploy Qt 5.5.1 on the Raspberry Pi, but I stumbled into a crash caused by the EGLFS platform plugin.
Unfortunately I haven't been able to reproduce the issue with the Qt examples but in my application it always happens when closing a QDialog. Either via accept() or reject().
Here's the information I collected so far:
- it didn't happen with Qt 5.4.2
- it doesn't happen with the LinuxFB platform plugin
- it doesn't happen with Qt 5.5.1 on a Linux machine (most likely the XCB platform plugin is OK too)
- I am using the official Linaro toolchain:
tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/bin/gcc -v Using built-in specs. COLLECT_GCC=tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/bin/gcc Target: arm-linux-gnueabihf Configured with: /home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/.build/src/gcc-linaro-4.8-2014.03/configure --build=x86_64-build_unknown-linux-gnu --host=x86_64-build_unknown-linux-gnu --target=arm-linux-gnueabihf --prefix=/home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/install --with-sysroot=/home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/install/arm-linux-gnueabihf/libc --enable-languages=c,c++,fortran --disable-multilib --enable-multiarch --with-arch=armv6 --with-tune=arm1176jz-s --with-fpu=vfp --with-float=hard --with-pkgversion='crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03' --with-bugurl=https://bugs.launchpad.net/gcc-linaro --enable-__cxa_atexit --enable-libmudflap --enable-libgomp --enable-libssp --with-gmp=/home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-mpfr=/home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-mpc=/home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-isl=/home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-cloog=/home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-libelf=/home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --enable-threads=posix --disable-libstdcxx-pch --enable-linker-build-id --enable-plugin --enable-gold --with-local-prefix=/home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/install/arm-linux-gnueabihf/libc --enable-c99 --enable-long-long --with-float=hard Thread model: posix gcc version 4.8.3 20140303 (prerelease) (crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03)
- this is the backtrace produced by GDB on a core dumped with 5.5.1 built in debug mode:
Program terminated with signal 11, Segmentation fault. #0 0x75356b54 in QtSharedPointer::ExternalRefCountData::getAndRef(QObject const*) () at tools/qsharedpointer.cpp:1328 1328 tools/qsharedpointer.cpp: No such file or directory. (gdb) backtrace #0 0x75356b54 in QtSharedPointer::ExternalRefCountData::getAndRef(QObject const*) () at tools/qsharedpointer.cpp:1328 #1 0x75cc5eb4 in QWeakPointer<QObject>::QWeakPointer<QWindow>(QWindow*, bool) () at ../../include/QtCore/../../src/corelib/tools/qsharedpointer_impl.h:696 #2 0x75cc51b8 in QPointer<QWindow>::QPointer(QWindow*) () at ../../include/QtCore/../../src/corelib/kernel/qpointer.h:62 #3 0x75cc3648 in QWindowSystemInterfacePrivate::LeaveEvent::LeaveEvent(QWindow*) () at kernel/qwindowsysteminterface_p.h:144 #4 0x75cc0048 in QWindowSystemInterface::handleLeaveEvent(QWindow*) () at kernel/qwindowsysteminterface.cpp:83 #5 0x75cc00ac in QWindowSystemInterface::handleEnterLeaveEvent(QWindow*, QWindow*, QPointF const&, QPointF const&) () at kernel/qwindowsysteminterface.cpp:99 #6 0x7443e7a0 in QEGLPlatformScreen::handleCursorMove(QPoint const&) () at eglconvenience/qeglplatformscreen.cpp:95 #7 0x7443bae4 in QEGLPlatformCursor::pointerEvent(QMouseEvent const&) () at eglconvenience/qeglplatformcursor.cpp:315 #8 0x75ce0f08 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at kernel/qguiapplication.cpp:1775 #9 0x75ce0540 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at kernel/qguiapplication.cpp:1581 #10 0x75cc1dc0 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at kernel/qwindowsysteminterface.cpp:625 #11 0x744410dc in userEventSourceDispatch(_GSource*, int (*)(void*), void*) () at eventdispatchers/qeventdispatcher_glib.cpp:70 #12 0x7495a40c in g_main_context_dispatch () from /lib/arm-linux-gnueabihf/libglib-2.0.so.0 #13 0x7495a634 in ?? () from /lib/arm-linux-gnueabihf/libglib-2.0.so.0 #14 0x7495a634 in ?? () from /lib/arm-linux-gnueabihf/libglib-2.0.so.0 Backtrace stopped: previous frame identical to this frame (corrupt stack?)
I still haven't had a look at the code, but my question is: is it safe to try the eglfs from the 5.6 branch and try it on 5.5.1 ?
Are they binary compatible ?
Next thing I can do is to build Qt 5.6.0 and give it a try.
In the meantime, any advise is much appreciated.
Thanks