enmbed application crushes using QT4
-
@Abu2023 that's some ancient version of Qt :-) Condolences.
You can try analyzing your app with Valgrind or address sanitizer, it is possible they will detect the problem even on desktop.
@sierdzio Thanks @sierdzio , I can run the app on ubuntu, so I think the app is OK. it can not run on embed system, I think the embed system maybe miss something. It crashes in QTGUI on embed system, does that mean I need to install something before I can use QTGUI on embed system because everything is OK on ubuntu. I checked frame buffer on embed system, it was installed correctly.
-
@sierdzio Thanks @sierdzio , I can run the app on ubuntu, so I think the app is OK. it can not run on embed system, I think the embed system maybe miss something. It crashes in QTGUI on embed system, does that mean I need to install something before I can use QTGUI on embed system because everything is OK on ubuntu. I checked frame buffer on embed system, it was installed correctly.
-
Hi,
I find that the app crashes when QT paints a retangle, but I do not know why it crashes, I installed frame buffer correctly. Could someone help figure out why?
Thanks very much. -
@Abu2023 hi,
You should give more informations about your target.
Also, did you consider using 4.8.7 ?
@SGaist
As QT4.8.6 is using in our whole project, I can not change it to 4.8.7, I use QT debug version to run, and here is the stack which shows more detail infomation,//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
(gdb) bt
#0 0x75eab2f4 in qt_memfill_template<unsigned int, unsigned int> (
dest=0x75163004, color=629810570, count=236)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qdrawhelper.cpp:7611
#1 0x75b89fac in qt_memfill<unsigned int> (dest=0x75162e50, color=629810570,
count=236)
at ../../include/QtGui/private/../../../../qt-everywhere-opensource-src-4.8.6/src/gui/painting/qdrawhelper_p.h:1846
#2 0x75ea69dc in qt_memfill_template<unsigned short, unsigned short> (
dest=0x75162e50, value=9610, count=472)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qdrawhelper.cpp:7640
#3 0x75e61784 in qt_memfill_quint16 (dest=0x75162e50, color=9610, count=472)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qdrawhelper.cpp:7648
#4 0x75b8a000 in qt_memfill<unsigned short> (dest=0x75162e50, color=9610,
count=472)
at ../../include/QtGui/private/../../../../qt-everywhere-opensource-src-4.8.6/src/gui/painting/qdrawhelper_p.h:1852
#5 0x75b8b134 in qt_rectfill<unsigned short> (dest=0x75162e50, value=9610,
x=808, y=2, width=472, height=635, stride=2560)
at ../../include/QtGui/private/../../../../qt-everywhere-opensource-src-4.8.6/src/gui/painting/qdrawhelper_p.h:1891
---Type <return> to continue, or q <return> to quit---
#6 0x75b81138 in solidFill_template<unsigned short> (screen=0x50fb8,
color=..., region=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/embedded/qscreen_qws.cpp:394
#7 0x75b7bf60 in qt_solidFill_setup (screen=0x50fb8, color=..., region=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/embedded/qscreen_qws.cpp:590
#8 0x75b7ec88 in QScreen::solidFill (this=0x50fb8, color=..., region=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/embedded/qscreen_qws.cpp:2583
#9 0x75b7fe3c in QScreen::paintBackground (this=0x50fb8, r=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/embedded/qscreen_qws.cpp:2797
#10 0x75b7f560 in QScreen::compose (this=0x50fb8, level=2, exposed=...,
blend=..., blendbuffer=0x7e7fe584, changing_level=0)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/embedded/qscreen_qws.cpp:2711
#11 0x75b7f4a8 in QScreen::compose (this=0x50fb8, level=1, exposed=...,
blend=..., blendbuffer=0x7e7fe584, changing_level=0)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/embedded/qscreen_qws.cpp:2701
#12 0x75b7e574 in QScreen::exposeRegion (this=0x50fb8, r=..., windowIndex=0)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/embedded/qscree---Type <return> to continue, or q <return> to quit---
n_qws.cpp:2448
#13 0x75ba120c in QWSServerPrivate::exposeRegion (this=0x4e478, r=...,
changing=0)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/embedded/qwindowsystem_qws.cpp:3589
#14 0x75ba22d4 in QWSServerPrivate::repaint_region (this=0x4e478, wid=1000,
windowFlags=134279169, opaque=true, region=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/embedded/qwindowsystem_qws.cpp:3848
#15 0x75c8a0ec in QWSDisplay::repaintRegion (this=0x504b0, winId=1000,
windowFlags=134279169, opaque=true, r=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qapplication_qws.cpp:1524
#16 0x75edd280 in QWSWindowSurface::flush (this=0x61988, widget=0x7e7fecd8,
region=..., offset=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qwindowsurface_qws.cpp:711
#17 0x75ed3618 in qt_flush (widget=0x7e7fecd8, region=...,
windowSurface=0x61988, tlw=0x7e7fecd8, tlwOffset=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qbackingstore.cpp:119
#18 0x75ed8c64 in QWidgetBackingStore::flush (this=0x4b3c0, widget=0x0,
surface=0x0)
---Type <return> to continue, or q <return> to quit---
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qbackingstore.cpp:1434
#19 0x75ed4258 in QWidgetBackingStore::endPaint (this=0x4b3c0, cleaned=...,
windowSurface=0x61988, beginPaintInfo=0x7e7fe834)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qbackingstore.cpp:409
#20 0x75ed8a84 in QWidgetBackingStore::sync (this=0x4b3c0)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qbackingstore.cpp:1376
#21 0x75ed7cdc in QWidgetBackingStore::sync (this=0x4b3c0,
exposedWidget=0x7e7fecd8, exposedRegion=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qbackingstore.cpp:1161
#22 0x75c48138 in QWidgetPrivate::syncBackingStore (this=0x5f800, region=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qwidget.cpp:1903
#23 0x75edc8b4 in QWSWindowSurface::setClipRegion (this=0x61988, clip=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qwindowsurface_qws.cpp:539
#24 0x75c93cfc in QETWidget::translateRegionEvent (this=0x7e7fecd8,
event=0x5f0f8)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qapplication_qws.cpp:3600
---Type <return> to continue, or q <return> to quit---
#25 0x75c912b8 in QApplication::qwsProcessEvent (this=0x7e7fecd0,
event=0x5f0f8)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qapplication_qws.cpp:3005#26 0x75c9c56c in QEventDispatcherQWS::processEvents (this=0x4c3a8, flags=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qeventdispatcher_qws.cpp:119
#27 0x756afa58 in QEventLoop::processEvents (this=0x7e7fec9c, flags=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qeventloop.cpp:149
#28 0x756afc00 in QEventLoop::exec (this=0x7e7fec9c, flags=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qeventloop.cpp:200
#29 0x756b365c in QCoreApplication::exec ()
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcoreapplication.cpp:1225
#30 0x75be8b68 in QApplication::exec ()
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qapplication.cpp:3823
#31 0x000163c0 in main (argc=<optimized out>, argv=0x7e7ff264)
at ../../../node_red/1.0.0/apps/UIController/main.cpp:43
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
In stack #0, dest = 0x75163004, but in #1 to #5, dest=0x75162e50, I do not know why dest changes.and in stack #1,
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#1 0x75b89fac in qt_memfill<unsigned int> (dest=0x75162e50, color=629810570,
count=236)
at ../../include/QtGui/private/../../../../qt-everywhere-opensource-src-4.8.6/src/gui/painting/qdrawhelper_p.h:1846
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////the function in qdrawhelper_p.h:1846 is as follows:
1843 template<> inline void qt_memfill(quint32 *dest, quint32 color, int count)
1844 {
1845 extern void (*qt_memfill32)(quint32 *dest, quint32 value, int count);
1846 qt_memfill32(dest, color, count);
1847 }line 1846 invokes qt_memfill32, but stack #0 shows qt_memfill_template<unsigned short, unsigned short>
is invoked, it seems that something misses between stack #0 and #1.I am not familiar with QT code, so can someone help?
-
@SGaist
As QT4.8.6 is using in our whole project, I can not change it to 4.8.7, I use QT debug version to run, and here is the stack which shows more detail infomation,//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
(gdb) bt
#0 0x75eab2f4 in qt_memfill_template<unsigned int, unsigned int> (
dest=0x75163004, color=629810570, count=236)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qdrawhelper.cpp:7611
#1 0x75b89fac in qt_memfill<unsigned int> (dest=0x75162e50, color=629810570,
count=236)
at ../../include/QtGui/private/../../../../qt-everywhere-opensource-src-4.8.6/src/gui/painting/qdrawhelper_p.h:1846
#2 0x75ea69dc in qt_memfill_template<unsigned short, unsigned short> (
dest=0x75162e50, value=9610, count=472)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qdrawhelper.cpp:7640
#3 0x75e61784 in qt_memfill_quint16 (dest=0x75162e50, color=9610, count=472)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qdrawhelper.cpp:7648
#4 0x75b8a000 in qt_memfill<unsigned short> (dest=0x75162e50, color=9610,
count=472)
at ../../include/QtGui/private/../../../../qt-everywhere-opensource-src-4.8.6/src/gui/painting/qdrawhelper_p.h:1852
#5 0x75b8b134 in qt_rectfill<unsigned short> (dest=0x75162e50, value=9610,
x=808, y=2, width=472, height=635, stride=2560)
at ../../include/QtGui/private/../../../../qt-everywhere-opensource-src-4.8.6/src/gui/painting/qdrawhelper_p.h:1891
---Type <return> to continue, or q <return> to quit---
#6 0x75b81138 in solidFill_template<unsigned short> (screen=0x50fb8,
color=..., region=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/embedded/qscreen_qws.cpp:394
#7 0x75b7bf60 in qt_solidFill_setup (screen=0x50fb8, color=..., region=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/embedded/qscreen_qws.cpp:590
#8 0x75b7ec88 in QScreen::solidFill (this=0x50fb8, color=..., region=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/embedded/qscreen_qws.cpp:2583
#9 0x75b7fe3c in QScreen::paintBackground (this=0x50fb8, r=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/embedded/qscreen_qws.cpp:2797
#10 0x75b7f560 in QScreen::compose (this=0x50fb8, level=2, exposed=...,
blend=..., blendbuffer=0x7e7fe584, changing_level=0)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/embedded/qscreen_qws.cpp:2711
#11 0x75b7f4a8 in QScreen::compose (this=0x50fb8, level=1, exposed=...,
blend=..., blendbuffer=0x7e7fe584, changing_level=0)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/embedded/qscreen_qws.cpp:2701
#12 0x75b7e574 in QScreen::exposeRegion (this=0x50fb8, r=..., windowIndex=0)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/embedded/qscree---Type <return> to continue, or q <return> to quit---
n_qws.cpp:2448
#13 0x75ba120c in QWSServerPrivate::exposeRegion (this=0x4e478, r=...,
changing=0)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/embedded/qwindowsystem_qws.cpp:3589
#14 0x75ba22d4 in QWSServerPrivate::repaint_region (this=0x4e478, wid=1000,
windowFlags=134279169, opaque=true, region=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/embedded/qwindowsystem_qws.cpp:3848
#15 0x75c8a0ec in QWSDisplay::repaintRegion (this=0x504b0, winId=1000,
windowFlags=134279169, opaque=true, r=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qapplication_qws.cpp:1524
#16 0x75edd280 in QWSWindowSurface::flush (this=0x61988, widget=0x7e7fecd8,
region=..., offset=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qwindowsurface_qws.cpp:711
#17 0x75ed3618 in qt_flush (widget=0x7e7fecd8, region=...,
windowSurface=0x61988, tlw=0x7e7fecd8, tlwOffset=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qbackingstore.cpp:119
#18 0x75ed8c64 in QWidgetBackingStore::flush (this=0x4b3c0, widget=0x0,
surface=0x0)
---Type <return> to continue, or q <return> to quit---
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qbackingstore.cpp:1434
#19 0x75ed4258 in QWidgetBackingStore::endPaint (this=0x4b3c0, cleaned=...,
windowSurface=0x61988, beginPaintInfo=0x7e7fe834)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qbackingstore.cpp:409
#20 0x75ed8a84 in QWidgetBackingStore::sync (this=0x4b3c0)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qbackingstore.cpp:1376
#21 0x75ed7cdc in QWidgetBackingStore::sync (this=0x4b3c0,
exposedWidget=0x7e7fecd8, exposedRegion=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qbackingstore.cpp:1161
#22 0x75c48138 in QWidgetPrivate::syncBackingStore (this=0x5f800, region=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qwidget.cpp:1903
#23 0x75edc8b4 in QWSWindowSurface::setClipRegion (this=0x61988, clip=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/painting/qwindowsurface_qws.cpp:539
#24 0x75c93cfc in QETWidget::translateRegionEvent (this=0x7e7fecd8,
event=0x5f0f8)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qapplication_qws.cpp:3600
---Type <return> to continue, or q <return> to quit---
#25 0x75c912b8 in QApplication::qwsProcessEvent (this=0x7e7fecd0,
event=0x5f0f8)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qapplication_qws.cpp:3005#26 0x75c9c56c in QEventDispatcherQWS::processEvents (this=0x4c3a8, flags=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qeventdispatcher_qws.cpp:119
#27 0x756afa58 in QEventLoop::processEvents (this=0x7e7fec9c, flags=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qeventloop.cpp:149
#28 0x756afc00 in QEventLoop::exec (this=0x7e7fec9c, flags=...)
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qeventloop.cpp:200
#29 0x756b365c in QCoreApplication::exec ()
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcoreapplication.cpp:1225
#30 0x75be8b68 in QApplication::exec ()
at /home/benan/qt/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qapplication.cpp:3823
#31 0x000163c0 in main (argc=<optimized out>, argv=0x7e7ff264)
at ../../../node_red/1.0.0/apps/UIController/main.cpp:43
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
In stack #0, dest = 0x75163004, but in #1 to #5, dest=0x75162e50, I do not know why dest changes.and in stack #1,
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#1 0x75b89fac in qt_memfill<unsigned int> (dest=0x75162e50, color=629810570,
count=236)
at ../../include/QtGui/private/../../../../qt-everywhere-opensource-src-4.8.6/src/gui/painting/qdrawhelper_p.h:1846
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////the function in qdrawhelper_p.h:1846 is as follows:
1843 template<> inline void qt_memfill(quint32 *dest, quint32 color, int count)
1844 {
1845 extern void (*qt_memfill32)(quint32 *dest, quint32 value, int count);
1846 qt_memfill32(dest, color, count);
1847 }line 1846 invokes qt_memfill32, but stack #0 shows qt_memfill_template<unsigned short, unsigned short>
is invoked, it seems that something misses between stack #0 and #1.I am not familiar with QT code, so can someone help?
-
@Abu2023 as already requested: which device are you running this on ? What are its specification ?
-
Please provide a link to the spec of the platform. If you want people to help you, the minimum is to give them the information they request rather than making them search.
-
Please provide a link to the spec of the platform. If you want people to help you, the minimum is to give them the information they request rather than making them search.
-
@SGaist
Hi, sorry for that. I did not find specification on its website, only found product introduction, https://www.novatek.com.tw/en-global/Product/product/Index/product2 , I do not if it will help finding the cause of the error. -
@Abu2023 did the provide you with an SDK for use with their product ?
I am currently wondering what they are using as memory and image layout to display the image on screen.
-
@SGaist
I can't see the sdk layer, my app invokes QT, QT invokes SDK, so my app does not invoke SDK directly.@Abu2023 said in enmbed application crushes using QT4:
so my app does not invoke SDK directly
SDK is used to build software for the target device. So, if you have an SDK and use it to build your Qt app then it is used during the build process.
You did not answer the question whether there is an SDK... -
@Abu2023 said in enmbed application crushes using QT4:
so my app does not invoke SDK directly
SDK is used to build software for the target device. So, if you have an SDK and use it to build your Qt app then it is used during the build process.
You did not answer the question whether there is an SDK...@jsulm There must be a SDK in the machine, but I do not know it. I did not check the source code. As QT uses frame buffer to show GUI, I check the frame buffer interfaces,
and found no referrence of it, only found some functions from article, like,1,open a device
int open(const char *pathname, int flags);
2, map lcd to local address
void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);
3, fill memory of mmap to draw UI
4, unmap address to lcd
int munmap(void *addr, size_t length);
5, close the device
int close(int fd);hope these informations can be helpfull.