2011-08-19 468 views
0

我在Linux上有一個Qt應用程序崩潰。 後臺堆棧幾乎顯示了所有Qt庫。 這是Qt的一個bug嗎? 如何處理?Linux Qt應用程序崩潰在Qt庫

Program received signal SIGABRT, Aborted. 
0x00007ffff5471d05 in raise (sig=6) 
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 
64 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory. 
    in ../nptl/sysdeps/unix/sysv/linux/raise.c 
(gdb) bt 
#0 0x00007ffff5471d05 in raise (sig=6) 
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 
#1 0x00007ffff5475ab6 in abort() at abort.c:92 
#2 0x00007ffff54aad7b in __libc_message (do_abort=2, 
    fmt=0x7ffff5593400 "*** glibc detected *** %s: %s: 0x%s ***\n") 
    at ../sysdeps/unix/sysv/linux/libc_fatal.c:189 
#3 0x00007ffff54b5fb1 in malloc_printerr (av=0x7ffff57cd1c0) at malloc.c:6283 
#4 malloc_consolidate (av=0x7ffff57cd1c0) at malloc.c:5161 
#5 0x00007ffff54b7472 in _int_malloc (av=0x7ffff57cd1c0, bytes=45826560) 
    at malloc.c:4373 
#6 0x00007ffff54ba31e in __libc_malloc (bytes=45826560) at malloc.c:3660 
#7 0x00007ffff62657b6 in QString::realloc(int)() from ./libQtCore.so.4 
#8 0x00007ffff6ceeae7 in ??() from ./libQtGui.so.4 
#9 0x00007ffff6cefb88 in QPainter::drawText(QRect const&, int, QString const&, QRect*)() from ./libQtGui.so.4 
#10 0x00007ffff6f41f23 in QCleanlooksStyle::drawItemText(QPainter*, QRect const&, int, QPalette const&, bool, QString const&, QPalette::ColorRole) const() 
    from ./libQtGui.so.4 
#11 0x00007ffff6fc3ae3 in QLabel::paintEvent(QPaintEvent*)() 
    from ./libQtGui.so.4 
#12 0x00007ffff6be6e9c in QWidget::event(QEvent*)() from ./libQtGui.so.4 
---Type <return> to continue, or q <return> to quit--- 
#13 0x00007ffff6fbe17b in QFrame::event(QEvent*)() from ./libQtGui.so.4 
#14 0x00007ffff6fc1cbb in QLabel::event(QEvent*)() from ./libQtGui.so.4 
#15 0x00007ffff6b8b84f in QApplicationPrivate::notify_helper(QObject*, QEvent*) 
    () from ./libQtGui.so.4 
#16 0x00007ffff6b92e22 in QApplication::notify(QObject*, QEvent*)() 
    from ./libQtGui.so.4 
#17 0x00007ffff6311b54 in QCoreApplication::notifyInternal(QObject*, QEvent*) 
    () from ./libQtCore.so.4 
#18 0x00007ffff6be4085 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*)() 
    from ./libQtGui.so.4 
#19 0x00007ffff6be4a02 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*)() from ./libQtGui.so.4 
#20 0x00007ffff6be48c4 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*)() from ./libQtGui.so.4 
#21 0x00007ffff6be48c4 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*)() from ./libQtGui.so.4 
#22 0x00007ffff6be48c4 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, ---Type <return> to continue, or q <return> to quit--- 
QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*)() from ./libQtGui.so.4 
#23 0x00007ffff6be48c4 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*)() from ./libQtGui.so.4 
#24 0x00007ffff6be48c4 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*)() from ./libQtGui.so.4 
#25 0x00007ffff6be3c7a in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*)() 
    from ./libQtGui.so.4 
#26 0x00007ffff6db6665 in ??() from ./libQtGui.so.4 
#27 0x00007ffff6bdaef6 in QWidgetPrivate::syncBackingStore()() 
    from ./libQtGui.so.4 
#28 0x00007ffff6be6fc6 in QWidget::event(QEvent*)() from ./libQtGui.so.4 
#29 0x00007ffff6b8b84f in QApplicationPrivate::notify_helper(QObject*, QEvent*) 
    () from ./libQtGui.so.4 
#30 0x00007ffff6b92e22 in QApplication::notify(QObject*, QEvent*)() 
    from ./libQtGui.so.4 
#31 0x00007ffff6311b54 in QCoreApplication::notifyInternal(QObject*, QEvent*) 
    () from ./libQtCore.so.4 
---Type <return> to continue, or q <return> to quit--- 
#32 0x00007ffff6312bb4 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*)() from ./libQtCore.so.4 
#33 0x00007ffff633e8c3 in ??() from ./libQtCore.so.4 
#34 0x00007ffff4d88bcd in g_main_context_dispatch() 
    from /lib/x86_64-linux-gnu/libglib-2.0.so.0 
#35 0x00007ffff4d893a8 in ??() from /lib/x86_64-linux-gnu/libglib-2.0.so.0 
#36 0x00007ffff4d89639 in g_main_context_iteration() 
    from /lib/x86_64-linux-gnu/libglib-2.0.so.0 
#37 0x00007ffff633eb35 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)() from ./libQtCore.so.4 
#38 0x00007ffff6c3be3f in ??() from ./libQtGui.so.4 
#39 0x00007ffff6310ef5 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)() from ./libQtCore.so.4 
#40 0x00007ffff631115d in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)() from ./libQtCore.so.4 
#41 0x00007ffff6312f04 in QCoreApplication::exec()() from ./libQtCore.so.4 
#42 0x000000000041b74a in main (argc=2, argv=0x7fffffffe1f8) at CCC.cpp:549 
(gdb) 

回答

1

閱讀堆棧跟蹤:

__libc_malloc (bytes=45826560) 
QPainter::drawText(...) 
QLabel::paintEvent(QPaintEvent*)() 

它看起來像你傳遞一個無效的字符串QT間期在QLabel來呈現。

+0

謝謝!要繪製的字符串有一些問題。它沒有寫入/讀取鎖定。 – user377808