[PyQt] eric crashes in QX11WindowSurface dtor

Phil Thompson phil at riverbankcomputing.com
Mon Feb 22 15:45:49 GMT 2010


On Fri, 19 Feb 2010 10:00:55 +0100, "Hans-Peter Jansen" <hpj at urpla.net>
wrote:
> Hi Phil,
> 
> I suffer from a 100% reproducible crash on eric shutdown:
> 
> [when catched with gdb directly:]
> Program received signal SIGSEGV, Segmentation fault.
> 0xb65eab22 in ~QX11WindowSurface (this=0xa5d1ba8) at
> painting/qwindowsurface_x11.cpp:84
> 84              XFreeGC(X11->display, gc);
> 
> Application: eric4 (eric4.py), signal: Segmentation fault
> [KCrash Handler]
> #6  0xb5d7eb22 in ~QX11WindowSurface (this=0xa7fb648) at
> painting/qwindowsurface_x11.cpp:84
> #7  0xb5d77a46 in ~QWidgetBackingStore (this=0xa7e2a18) at
> painting/qbackingstore.cpp:832
> #8  0xb5bd8346 in QWidgetPrivate::deleteExtra (this=0xa72cfd0) at
> kernel/qwidget.cpp:1503
> #9  0xb5bd8b25 in ~QWidgetPrivate (this=0xa72cfd0) at
> kernel/qwidget.cpp:227
> #10 0xb5fc36da in ~QMenuPrivate (this=0xa72cfd0) at widgets/qmenu_p.h:151
> #11 0xb7020531 in ~QObject (this=0xa72cf80) at kernel/qobject.cpp:857
> #12 0xb5bde7bf in ~QWidget (this=0xa72cf80) at kernel/qwidget.cpp:1380
> #13 0xb5fb8750 in ~QMenu (this=0xa72cf80) at widgets/qmenu.cpp:1380
> #14 0xb679062c in ~sipQMenu (this=0xa72cf80) at sipQtGuiQMenu.cpp:311
> #15 0xb678b180 in release_QMenu (sipCppV=0xa72cf80, sipState=262) at
> sipQtGuiQMenu.cpp:2777
> #16 0xb678b1d7 in dealloc_QMenu (sipSelf=0x19) at sipQtGuiQMenu.cpp:2791
> #17 0xb7123a9b in forgetObject () from
> /usr/lib/python2.6/site-packages/sip.so
> #18 0xb7123ad1 in sipWrapper_dealloc () from
> /usr/lib/python2.6/site-packages/sip.so
> #19 0xb765165d in subtype_dealloc (self=0xa62976c) at
> Objects/typeobject.c:1018
> #20 0xb76346c1 in dict_dealloc (mp=0xa5dd934) at Objects/dictobject.c:911
> #21 0xb7121a7b in sipSimpleWrapper_clear () from
> /usr/lib/python2.6/site-packages/sip.so
> #22 0xb712234f in sipWrapper_clear () from
> /usr/lib/python2.6/site-packages/sip.so
> #23 0xb7652ed2 in subtype_clear (self=0xa61afac) at
> Objects/typeobject.c:893
> #24 0xb76b7fb6 in collect (generation=2) at Modules/gcmodule.c:714
> #25 0xb76b8582 in PyGC_Collect () at Modules/gcmodule.c:1289
> #26 0xb76a9db2 in Py_Finalize () at Python/pythonrun.c:420
> #27 0xb76a9f47 in Py_Exit (sts=0) at Python/pythonrun.c:1689
> #28 0xb76aa060 in handle_system_exit () at Python/pythonrun.c:1111
> #29 0xb76aa0ed in PyErr_PrintEx (set_sys_last_vars=1) at
> Python/pythonrun.c:1121
> #30 0xb76aa3fe in PyErr_Print () at Python/pythonrun.c:1030
> #31 0xb76aa59e in PyRun_SimpleFileExFlags (fp=0xbffbef37,
> filename=0xbffbef37 "/usr/lib/python2.6/site-packages/eric4/eric4.py",
> closeit=1, 
> flags=0xbffbd7e8) at Python/pythonrun.c:930
> #32 0xb76aa818 in PyRun_AnyFileExFlags (fp=0x805ecd8, filename=0xbffbef37
> "/usr/lib/python2.6/site-packages/eric4/eric4.py", closeit=1, 
> flags=0xbffbd7e8) at Python/pythonrun.c:731
> #33 0xb76b6e12 in Py_Main (argc=1, argv=0xbffbd8b4) at Modules/main.c:597
> #34 0x08048692 in main (argc=) at Modules/python.c:23
> 
> 
> All it takes is running eric, load a file, split the view 
> "New view (with new split)" via context menu, and quit.
> 
> My environment: openSUSE 11.1 (all packages available on build service)
> qscintilla-2.4
> qt4-4.5.3
> python-sip-4.10
> python-qt4-4.7
> eric-4.4.1
> 
> Any idea? Are you able to reproduce it? 
> 
> Let me know, if you need more feedback.

I can't reproduce it.

The problem looks like things being destroyed in the wrong order - not
something PyQt can control. You can try to del the QMenu instance before
calling sys.exit().

Phil


More information about the PyQt mailing list