-
Bug
-
Resolution: Incomplete
-
P2: Important
-
None
-
4.7.0, 4.7.1, 4.7.2, 4.7.3, 4.7.4
-
None
-
Linux kernel version 2.6.32.27; gcc version 4.4 ;little endian ;cpu (MIPS 24ke)
When I tried to run some QML examples(animation, photoviewer, ...) by qmlviewer in MIPS platform, I found that "Bus Error" always appeared, except the simplest example(helloworld in tutorial/helloworld/tutorial1.qml).
Then I found there was a similar bug(QTBUG-17355) has been reported. Following the decription in this bug, I modified "dummy[8]" to "dummy[8] _attribute_((aligned(8)))", I found it was helpful for Qt4.7.0, but Qt4.7.3 and Qt4.8.0b1 didn't work yet, and photoviewer still had the same issue.
Though the comment in QTBUG-17355 said that "In QtQuick2 we've switched to V8, which doesn't have this problem.", but I don't think it is a good answer, because QtQuick2 isn't released offically yet, and I need QML works in 4.7.x.
After debugging for a long time, I found it is still a MIPS alignment issue, besides "dummy[8]" in QTBUG-17355 has to be modified, there are 2 more files need to modify as following:
To fix "bus error" for most of qml examples:
src/gui/painting/qpaintengine_raster.cpp: function "QRasterPaintEnginePrivate::rastersize(...)", the pointer of rasterPoolBase must be 8-bytes alignment.
src/gui/painting/qgray_raster.c: structure "TWorker": member "qt_ft_jmp_buf jump_buffer" must be 8-bytes alignment.
To fix "bus error" in photo viewer after applying modification as above:
src/declarative/qml/qdeclarativevmemetaobject.cpp: class "QDeclarativeVMEVariant": member "data[4]" must be 8-bytes alignment.
I will make a patch later for this modification.