[Qt-interest] Segfault with an opengl widget

Damien R. damienrg+list at gmail.com
Wed Sep 1 13:22:47 CEST 2010


Hi,

I am using the version 4.6.3-1 of qt on debian sid 64.

I have a segfault when I call QCoreApplication::exit(0) with the 
following backtrace:

#0  QWidgetPrivate::init (this=0x7d9c00, parentWidget=0x0, f=DWARF-2 
expression error: DW_OP_reg operations must be used either alone or in 
conjuction with DW_OP_piece.
) at kernel/qwidget.cpp:1124
#1  0x00007ffff47e7cb1 in QWidget (this=0x85b6b0, dd=<value optimized 
out>, parent=0x0, f=...) at kernel/qwidget.cpp:1044
#2  0x00007ffff4827722 in QDesktopWidget (this=0x85b6b0) at 
kernel/qdesktopwidget_x11.cpp:220
#3  0x00007ffff478e5cc in QApplication::desktop () at 
kernel/qapplication.cpp:3073
#4  0x00007ffff4832e24 in QWidgetPrivate::create_sys (this=0x808830, 
window=0, initializeWindow=<value optimized out>, 
destroyOldWindow=<value optimized out>) at kernel/qwidget_x11.cpp:551
#5  0x00007ffff47e57db in QWidget::create (this=0x808710, window=0, 
initializeWindow=112, destroyOldWindow=128) at kernel/qwidget.cpp:1323
#6  0x00007ffff47e200a in QWidgetPrivate::createWinId (this=<value 
optimized out>, winid=0) at kernel/qwidget.cpp:2324
#7  0x00007ffff47e601f in QWidget::winId (this=0x808d50) at 
kernel/qwidget.cpp:2306
#8  0x00007ffff1f7e31a in QGLContext::makeCurrent (this=0x8485d0) at 
qgl_x11.cpp:846
#9  0x00007ffff1f7d002 in QGLShareContextScope (this=0x845350, 
__in_chrg=<value optimized out>) at 
../../include/QtOpenGL/private/../../../src/opengl/qgl_p.h:457
#10 ~QGLTextureGlyphCache (this=0x845350, __in_chrg=<value optimized 
out>) at gl2paintengineex/qtextureglyphcache_gl.cpp:65
#11 0x00007ffff49b99a2 in ~QFontEngine (this=0x888240, __in_chrg=<value 
optimized out>) at text/qfontengine.cpp:190
#12 0x00007ffff4a73573 in ~QFontEngineX11FT (this=0x888240, 
__in_chrg=<value optimized out>) at text/qfontengine_x11.cpp:1123
#13 0x00007ffff49b9c97 in ~QFontEngineMulti (this=0x84ab80, 
__in_chrg=<value optimized out>) at text/qfontengine.cpp:1278
#14 0x00007ffff4a786d4 in ~QFontEngineMultiFT (this=0x84ab80, 
__in_chrg=<value optimized out>) at text/qfontengine_x11.cpp:902
#15 0x00007ffff49ad402 in QFontCache::clear (this=0x84a0a0) at 
text/qfont.cpp:2691
#16 0x00007ffff49b334a in ~QFontCache (this=0x7d9c00, __in_chrg=<value 
optimized out>) at text/qfont.cpp:2631
#17 0x00007ffff418dc32 in QThreadStorageData::set (this=<value optimized 
out>, p=0x0) at thread/qthreadstorage.cpp:148
#18 0x00007ffff4809aca in qt_cleanup () at kernel/qapplication_x11.cpp:2593
#19 0x00007ffff479b1b9 in ~QApplication (this=0x7fffecd5ad90, 
__in_chrg=<value optimized out>) at kernel/qapplication.cpp:1086

So, ~QApplication destroy all widgets (call w->destroy(true, true), the 
destructor of my widget is not called) and when qt_cleanup is called, it 
calls windId() which creates a new widget.

I do not know if it is a bug in qt or if I made a mistake. Can someone 
give me clues ?

--
Damien R.



More information about the Qt-interest-old mailing list