[PyQt] eric4 and PyQt dtors

Hans-Peter Jansen hpj at urpla.net
Thu Mar 21 20:25:57 GMT 2013

Hi Phil,

If I remember correctly, you talked about making a new termination scheme 
default, where you don't call any dtors from a certain point in the 
termination process. Is this already available as an option?

When leaving eric4 running for an extended period of time, I *always*
harvest belows seg fault on termination, with current sip/PyQt snapshots.

I guess, such an option would be easier then hunting and deleting the 
last forgotten menu item...


Application: eric4 (python2.7), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7faa86595700 (LWP 5604))]

Thread 2 (Thread 0x7faa62a5b700 (LWP 9430)):
#0  0x00007faa85b2a14f in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007faa83991684 in g_main_context_poll (n_fds=1, fds=0x7faa5801d680, timeout=-1, context=0x7faa58002720, priority=<optimized out>) at gmain.c:3440
#2  g_main_context_iterate (context=context at entry=0x7faa58002720, block=block at entry=1, dispatch=dispatch at entry=1, self=<optimized out>) at gmain.c:3141
#3  0x00007faa839917a4 in g_main_context_iteration (context=0x7faa58002720, may_block=1) at gmain.c:3207
#4  0x00007faa84725166 in QEventDispatcherGlib::processEvents (this=0x7faa5801bee0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#5  0x00007faa846f597f in QEventLoop::processEvents (this=this at entry=0x7faa62a5ae50, flags=...) at kernel/qeventloop.cpp:149
#6  0x00007faa846f5c08 in QEventLoop::exec (this=0x7faa62a5ae50, flags=...) at kernel/qeventloop.cpp:204
#7  0x00007faa845f80e0 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:542
#8  0x00007faa846d60ef in QInotifyFileSystemWatcherEngine::run (this=0x76477a0) at io/qfilesystemwatcher_inotify.cpp:256
#9  0x00007faa845fb0bc in QThreadPrivate::start (arg=0x76477a0) at thread/qthread_unix.cpp:338
#10 0x00007faa85dfae0e in start_thread (arg=0x7faa62a5b700) at pthread_create.c:305
#11 0x00007faa85b322cd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Thread 1 (Thread 0x7faa86595700 (LWP 5604)):
[KCrash Handler]
#6  0x00007faa81fcf41a in QWidgetPrivate::deleteTLSysExtra (this=0x632e390) at kernel/qwidget_x11.cpp:2884
#7  0x00007faa81f8711e in QWidgetPrivate::deleteExtra (this=this at entry=0x632e390) at kernel/qwidget.cpp:1834
#8  0x00007faa81f8734d in QWidgetPrivate::~QWidgetPrivate (this=0x632e390, __in_chrg=<optimized out>) at kernel/qwidget.cpp:361
#9  0x00007faa8237c7f9 in ~QMenuPrivate (this=0x632e390, __in_chrg=<optimized out>) at widgets/qmenu_p.h:171
#10 QMenuPrivate::~QMenuPrivate (this=0x632e390, __in_chrg=<optimized out>) at widgets/qmenu_p.h:183
#11 0x00007faa8470d1cc in cleanup (pointer=<optimized out>) at ../../src/corelib/tools/qscopedpointer.h:62
#12 ~QScopedPointer (this=0x632e328, __in_chrg=<optimized out>) at ../../src/corelib/tools/qscopedpointer.h:100
#13 QObject::~QObject (this=0x632e320, __in_chrg=<optimized out>) at kernel/qobject.cpp:816
#14 0x00007faa81f89440 in QWidget::~QWidget (this=0x632e320, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1556
#15 0x00007faa82e8c189 in sipQMenu::~sipQMenu (this=0x632e320, __in_chrg=<optimized out>) at sipQtGuiQMenu.cpp:316
#16 0x00007faa82e8aeb6 in release_QMenu (sipCppV=0x632e320) at sipQtGuiQMenu.cpp:2785
#17 0x00007faa834d5bee in forgetObject (sw=sw at entry=0x6333320) at siplib.c:10427
#18 0x00007faa834d7549 in sipWrapper_dealloc (self=0x6333320) at siplib.c:9979
#19 0x00007faa860b8c76 in subtype_dealloc (self=0x6333320) at Objects/typeobject.c:1014
#20 0x00007faa860b2a78 in dict_dealloc (mp=0x631e2d0) at Objects/dictobject.c:985
#21 0x00007faa860b2a50 in dict_dealloc (mp=0x7faa54261a80) at Objects/dictobject.c:985
#22 0x00007faa834d5033 in sipSimpleWrapper_clear (self=self at entry=0x5fd3200) at siplib.c:9559
#23 0x00007faa834d74c2 in sipWrapper_clear (self=0x5fd3200) at siplib.c:9940
#24 0x00007faa8610e17d in delete_garbage (old=0x7faa86391f60 <generations+96>, collectable=0x7ffffb1e86f0) at Modules/gcmodule.c:769
#25 collect (generation=2) at Modules/gcmodule.c:930
#26 0x00007faa8610e661 in PyGC_Collect () at Modules/gcmodule.c:1386
#27 0x00007faa86103724 in Py_Finalize () at Python/pythonrun.c:444
#28 0x00007faa86103248 in Py_Exit (sts=0) at Python/pythonrun.c:1760
#29 0x00007faa8610333f in handle_system_exit () at Python/pythonrun.c:1134
#30 0x00007faa861033f5 in PyErr_PrintEx (set_sys_last_vars=set_sys_last_vars at entry=1) at Python/pythonrun.c:1144
#31 0x00007faa8610369a in PyErr_Print () at Python/pythonrun.c:1047
#32 0x00007faa86103a2b in PyRun_SimpleFileExFlags (fp=<optimized out>, fp at entry=0x2339450, filename=<optimized out>, filename at entry=0x7ffffb1e9268 "/usr/lib64/python2.7/site-packages/eric4/eric4.py", closeit=closeit at entry=1, flags=flags at entry=0x7ffffb1e8920) at Python/pythonrun.c:947
#33 0x00007faa86103d33 in PyRun_AnyFileExFlags (fp=fp at entry=0x2339450, filename=filename at entry=0x7ffffb1e9268 "/usr/lib64/python2.7/site-packages/eric4/eric4.py", closeit=closeit at entry=1, flags=flags at entry=0x7ffffb1e8920) at Python/pythonrun.c:747
#34 0x00007faa8610d26d in Py_Main (argc=<optimized out>, argv=0x7ffffb1e8ad8) at Modules/main.c:639
#35 0x00007faa85a6f455 in __libc_start_main (main=0x400730 <main>, argc=2, ubp_av=0x7ffffb1e8ad8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffffb1e8ac8) at libc-start.c:226
#36 0x0000000000400761 in _start () at ../sysdeps/x86_64/elf/start.S:113

More information about the PyQt mailing list