[wxPython] Weird wxPython error

I've been setting up graphing classes and as I begin to increase my
object hierarchy, I'm finding that python is acting funny. I seem to
get errors like:

  Fatal Python error: PyThreadState_Get: no current thread
  Aborted

  However, if I add a function that does absolutely nothing or
add a bit of code or take away some, then it seems to run just
fine. Weird. Here's the extra long stacktrace if it helps. The problem
seems to be in garbage collection within wxPython...

                      -- Mike

#0 0x4008e9f1 in __kill () from /lib/libc.so.6
#1 0x4002cdbe in pthread_kill (thread=1024, signo=6) at signals.c:65
#2 0x4002d28d in raise (sig=6) at signals.c:232
#3 0x4008fe31 in abort () at ../sysdeps/generic/abort.c:88
#4 0x806ca21 in Py_FatalError () at Python/pythonrun.c:1235
#5 0x806ae30 in PyThreadState_Get () at Python/pystate.c:213
#6 0x80626df in PyErr_Occurred () at Python/errors.c:78
#7 0x80705ce in _PyGC_Insert (op=0x819bedc) at ./Modules/gcmodule.c:504
#8 0x80923c7 in PyTuple_New (size=2) at Objects/tupleobject.c:87
#9 0x401edc9e in wxSize_asTuple (self=0x82a5560) at src/gtk/misc.cpp:1305
#10 0x401edd56 in _wrap_wxSize_asTuple (self=0x0, args=0x842d9fc, kwargs=0x84374d4) at src/gtk/misc.cpp:1328
#11 0x8058b53 in call_cfunction (func=0x8143b48, arg=0x842d9fc, kw=0x84374d4) at Python/ceval.c:2849
#12 0x8058a96 in call_object (func=0x8143b48, arg=0x842d9fc, kw=0x84374d4) at Python/ceval.c:2820
#13 0x805897d in PyEval_CallObjectWithKeywords (func=0x8143b48, arg=0x842d9fc, kw=0x84374d4) at Python/ceval.c:2753
#14 0x809a182 in builtin_apply (self=0x0, args=0x83e9a4c) at Python/bltinmodule.c:90
#15 0x8058b9a in call_cfunction (func=0x80c8880, arg=0x83e9a4c, kw=0x0) at Python/ceval.c:2858
#16 0x8057639 in eval_code2 (co=0x81d7e80, globals=0x81fbbac, locals=0x0, args=0x8423d78, argcount=1, kws=0x8423d7c, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1960
#17 0x8058f54 in fast_function (func=0x81fcb94, pp_stack=0xbfffe074, n=1, na=1, nk=0) at Python/ceval.c:3035
#18 0x80576e6 in eval_code2 (co=0x81d9328, globals=0x81fbbac, locals=0x0, args=0x83e9b60, argcount=2, kws=0x0, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1984
#19 0x8058e59 in call_eval_code2 (func=0x81fd954, arg=0x83e9b54, kw=0x0) at Python/ceval.c:2979
#20 0x8058a82 in call_object (func=0x81fd954, arg=0x83e9b54, kw=0x0) at Python/ceval.c:2818
#21 0x8058d1d in call_method (func=0x81fd954, arg=0x840348c, kw=0x0) at Python/ceval.c:2936
#22 0x8058a6e in call_object (func=0x8429df4, arg=0x840348c, kw=0x0) at Python/ceval.c:2816
#23 0x805897d in PyEval_CallObjectWithKeywords (func=0x8429df4, arg=0x840348c, kw=0x0) at Python/ceval.c:2753
#24 0x807d6cc in instance_item (inst=0x84375cc, i=0) at Objects/classobject.c:983
#25 0x807aa6c in PySequence_GetItem (s=0x84375cc, i=0) at Objects/abstract.c:995
#26 0x805843e in unpack_sequence (v=0x84375cc, argcnt=2, sp=0x841c6dc) at Python/ceval.c:2509
#27 0x8056bab in eval_code2 (co=0x81b8ca8, globals=0x80d3484, locals=0x0, args=0x841d12c, argcount=2, kws=0x841d134, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1576
#28 0x8058f54 in fast_function (func=0x81e30b4, pp_stack=0xbfffe3e4, n=2, na=2, nk=0) at Python/ceval.c:3035
#29 0x80576e6 in eval_code2 (co=0x81bc870, globals=0x80d3484, locals=0x0, args=0x83e9b20, argcount=1, kws=0x0, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1984
#30 0x8058e59 in call_eval_code2 (func=0x8400164, arg=0x83e9b14, kw=0x0) at Python/ceval.c:2979
#31 0x8058a82 in call_object (func=0x8400164, arg=0x83e9b14, kw=0x0) at Python/ceval.c:2818
#32 0x8058d1d in call_method (func=0x8400164, arg=0x83e9b14, kw=0x0) at Python/ceval.c:2936
#33 0x8058a6e in call_object (func=0x81f78ac, arg=0x83e9b14, kw=0x0) at Python/ceval.c:2816
#34 0x80591fb in do_call (func=0x81f78ac, pp_stack=0xbfffe5b4, na=1, nk=0) at Python/ceval.c:3136
#35 0x80576ff in eval_code2 (co=0x81acf20, globals=0x80d3484, locals=0x0, args=0x8352b08, argcount=1, kws=0x8352b0c, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1987
#36 0x8058f54 in fast_function (func=0x83e731c, pp_stack=0xbfffe6c4, n=1, na=1, nk=0) at Python/ceval.c:3035
#37 0x80576e6 in eval_code2 (co=0x81b2d10, globals=0x80d3484, locals=0x0, args=0x841fa98, argcount=2, kws=0x0, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1984
#38 0x8058e59 in call_eval_code2 (func=0x81f65d4, arg=0x841fa8c, kw=0x0) at Python/ceval.c:2979
#39 0x8058a82 in call_object (func=0x81f65d4, arg=0x841fa8c, kw=0x0) at Python/ceval.c:2818
#40 0x8058d1d in call_method (func=0x81f65d4, arg=0x841fa8c, kw=0x0) at Python/ceval.c:2936
#41 0x8058a6e in call_object (func=0x80f8254, arg=0x841fa8c, kw=0x0) at Python/ceval.c:2816
#42 0x80591fb in do_call (func=0x80f8254, pp_stack=0xbfffe894, na=2, nk=0) at Python/ceval.c:3136
#43 0x80576ff in eval_code2 (co=0x81b6488, globals=0x80d3484, locals=0x0, args=0x83e9b88, argcount=2, kws=0x0, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1987
#44 0x8058e59 in call_eval_code2 (func=0x81e3274, arg=0x83e9b7c, kw=0x0) at Python/ceval.c:2979
#45 0x8058a82 in call_object (func=0x81e3274, arg=0x83e9b7c, kw=0x0) at Python/ceval.c:2818
#46 0x8058d1d in call_method (func=0x81e3274, arg=0x841badc, kw=0x0) at Python/ceval.c:2936
#47 0x8058a6e in call_object (func=0x8424c3c, arg=0x841badc, kw=0x0) at Python/ceval.c:2816
#48 0x805897d in PyEval_CallObjectWithKeywords (func=0x8424c3c, arg=0x841badc, kw=0x0) at Python/ceval.c:2753
#49 0x401b4738 in wxPyCallback::EventThunker (this=0x8424da0, event=@0xbfffeab0) at src/helpers.cpp:586
#50 0x404eb975 in wxEvtHandler::SearchDynamicEventTable () from /usr/local/lib/libwx_gtk-2.3.so
#51 0x404eb4bd in wxEvtHandler::ProcessEvent () from /usr/local/lib/libwx_gtk-2.3.so
#52 0x404ca2ad in wxWindow::DoSetSize () from /usr/local/lib/libwx_gtk-2.3.so
#53 0x40535a80 in wxSizerItem::SetDimension () from /usr/local/lib/libwx_gtk-2.3.so
#54 0x40536b06 in wxGridSizer::SetItemBounds () from /usr/local/lib/libwx_gtk-2.3.so
#55 0x40536f92 in wxFlexGridSizer::RecalcSizes () from /usr/local/lib/libwx_gtk-2.3.so
#56 0x40536455 in wxSizer::SetDimension () from /usr/local/lib/libwx_gtk-2.3.so
#57 0x4055186a in wxWindowBase::Layout () from /usr/local/lib/libwx_gtk-2.3.so
#58 0x40542b7f in wxTopLevelWindowBase::OnSize () from /usr/local/lib/libwx_gtk-2.3.so
#59 0x404eb6b2 in wxEvtHandler::SearchEventTable () from /usr/local/lib/libwx_gtk-2.3.so
#60 0x404eb531 in wxEvtHandler::ProcessEvent () from /usr/local/lib/libwx_gtk-2.3.so
#61 0x404a8b7b in wxFrame::GtkOnSize () from /usr/local/lib/libwx_gtk-2.3.so
#62 0x404c1fd8 in wxTopLevelWindowGTK::OnInternalIdle () from /usr/local/lib/libwx_gtk-2.3.so
#63 0x404a8c68 in wxFrame::OnInternalIdle () from /usr/local/lib/libwx_gtk-2.3.so
#64 0x40491eeb in wxApp::SendIdleEvents () from /usr/local/lib/libwx_gtk-2.3.so
#65 0x40491e61 in wxApp::SendIdleEvents () from /usr/local/lib/libwx_gtk-2.3.so
#66 0x40491e13 in wxApp::OnIdle () from /usr/local/lib/libwx_gtk-2.3.so
#67 0x404eb6b2 in wxEvtHandler::SearchEventTable () from /usr/local/lib/libwx_gtk-2.3.so
#68 0x404eb531 in wxEvtHandler::ProcessEvent () from /usr/local/lib/libwx_gtk-2.3.so
#69 0x40491da9 in wxApp::ProcessIdle () from /usr/local/lib/libwx_gtk-2.3.so
#70 0x40491817 in wxapp_idle_callback () from /usr/local/lib/libwx_gtk-2.3.so
#71 0x407ca32a in g_timeout_add () from /opt/gnome/lib/libglib-1.2.so.0
#72 0x407c9308 in g_get_current_time () from /opt/gnome/lib/libglib-1.2.so.0
#73 0x407c9913 in g_get_current_time () from /opt/gnome/lib/libglib-1.2.so.0
#74 0x407c9aac in g_main_run () from /opt/gnome/lib/libglib-1.2.so.0
#75 0x406e97e7 in gtk_main () from /opt/gnome/lib/libgtk-1.2.so.0
#76 0x40491f68 in wxApp::MainLoop () from /usr/local/lib/libwx_gtk-2.3.so
#77 0x401b3b7b in wxPyApp::MainLoop (this=0x8416ff0) at src/helpers.cpp:107
#78 0x401b96e2 in _wrap_wxPyApp_MainLoop (self=0x0, args=0x841cb24, kwargs=0x842a224) at src/gtk/wx.cpp:1332
#79 0x8058b53 in call_cfunction (func=0x81b6398, arg=0x841cb24, kw=0x842a224) at Python/ceval.c:2849
#80 0x8058a96 in call_object (func=0x81b6398, arg=0x841cb24, kw=0x842a224) at Python/ceval.c:2820
#81 0x805897d in PyEval_CallObjectWithKeywords (func=0x81b6398, arg=0x841cb24, kw=0x842a224) at Python/ceval.c:2753
#82 0x809a182 in builtin_apply (self=0x0, args=0x84032ac) at Python/bltinmodule.c:90
#83 0x8058b9a in call_cfunction (func=0x80c8880, arg=0x84032ac, kw=0x0) at Python/ceval.c:2858
#84 0x8057639 in eval_code2 (co=0x819e488, globals=0x8201d94, locals=0x0, args=0x82fb858, argcount=1, kws=0x0, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1960
#85 0x8058e59 in call_eval_code2 (func=0x83e5b3c, arg=0x82fb84c, kw=0x0) at Python/ceval.c:2979
#86 0x8058a82 in call_object (func=0x83e5b3c, arg=0x82fb84c, kw=0x0) at Python/ceval.c:2818
#87 0x8058d1d in call_method (func=0x83e5b3c, arg=0x82fb84c, kw=0x0) at Python/ceval.c:2936
#88 0x8058a6e in call_object (func=0x80d1bb4, arg=0x82fb84c, kw=0x0) at Python/ceval.c:2816
#89 0x80591fb in do_call (func=0x80d1bb4, pp_stack=0xbffff634, na=1, nk=0) at Python/ceval.c:3136
#90 0x80576ff in eval_code2 (co=0x81f5240, globals=0x8201d94, locals=0x0, args=0x80d4e8c, argcount=1, kws=0x80d4e90, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1987
#91 0x8058f54 in fast_function (func=0x82faa84, pp_stack=0xbffff744, n=1, na=1, nk=0) at Python/ceval.c:3035
#92 0x80576e6 in eval_code2 (co=0x81ace18, globals=0x80d3484, locals=0x0, args=0x80cc654, argcount=1, kws=0x80cc658, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1984
#93 0x8058f54 in fast_function (func=0x8202bd4, pp_stack=0xbffff854, n=1, na=1, nk=0) at Python/ceval.c:3035
#94 0x80576e6 in eval_code2 (co=0x81ba710, globals=0x80d3484, locals=0x80d3484, args=0x0, argcount=0, kws=0x0, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1984
#95 0x8054d79 in PyEval_EvalCode (co=0x81ba710, globals=0x80d3484, locals=0x80d3484) at Python/ceval.c:341
#96 0x806c623 in run_node (n=0x80d6e40, filename=0xbffffbbb "graph_tools.py", globals=0x80d3484, locals=0x80d3484, flags=0xbffff9f8)
    at Python/pythonrun.c:1049
#97 0x806c5da in run_err_node (n=0x80d6e40, filename=0xbffffbbb "graph_tools.py", globals=0x80d3484, locals=0x80d3484, flags=0xbffff9f8)
---Type <return> to continue, or q <return> to quit---
    at Python/pythonrun.c:1036
#98 0x806c5ae in PyRun_FileExFlags (fp=0x80c8300, filename=0xbffffbbb "graph_tools.py", start=257, globals=0x80d3484, locals=0x80d3484, closeit=1,
    flags=0xbffff9f8) at Python/pythonrun.c:1027
#99 0x806b9c1 in PyRun_SimpleFileExFlags (fp=0x80c8300, filename=0xbffffbbb "graph_tools.py", closeit=1, flags=0xbffff9f8) at Python/pythonrun.c:666
#100 0x806b50f in PyRun_AnyFileExFlags (fp=0x80c8300, filename=0xbffffbbb "graph_tools.py", closeit=1, flags=0xbffff9f8) at Python/pythonrun.c:480
#101 0x8051e50 in Py_Main (argc=2, argv=0xbffffa84) at Modules/main.c:320
#102 0x8051908 in main (argc=2, argv=0xbffffa84) at Modules/python.c:10
#103 0x4007f2eb in __libc_start_main (main=0x80518f4 <main>, argc=2, ubp_av=0xbffffa84, init=0x8050da4 <_init>, fini=0x809e89c <_fini>,
    rtld_fini=0x4000c130 <_dl_fini>, stack_end=0xbffffa7c) at ../sysdeps/generic/libc-start.c:129

···

--
Michael Gilfix
mgilfix@eecs.tufts.edu

For my gpg public key:
http://www.eecs.tufts.edu/~mgilfix/contact.html

Ok, I figured out what the problem is. I have a method for size
events in the base class. I override that in the dervied class and
call the base class first and then do some extra stuff. That causes
that message to appear. Ugh. Can I not do this or is it a bug? Here's
a sample idea of the program:

class A (wxWindow):

  def __init__ (self..):
    EVT_PAINT (self, self.onSize)

  def onSize (self, event):
    blah

class B (A):

  ...

  def onSize (self, event):

    A.onSize (self, event)

    .. do more

                    -- Mike

···

On Tue, Apr 09 @ 20:33, Michael Gilfix wrote:

  I've been setting up graphing classes and as I begin to increase my
object hierarchy, I'm finding that python is acting funny. I seem to
get errors like:

  Fatal Python error: PyThreadState_Get: no current thread
  Aborted

  However, if I add a function that does absolutely nothing or
add a bit of code or take away some, then it seems to run just
fine. Weird. Here's the extra long stacktrace if it helps. The problem
seems to be in garbage collection within wxPython...

                      -- Mike

#0 0x4008e9f1 in __kill () from /lib/libc.so.6
#1 0x4002cdbe in pthread_kill (thread=1024, signo=6) at signals.c:65
#2 0x4002d28d in raise (sig=6) at signals.c:232
#3 0x4008fe31 in abort () at ../sysdeps/generic/abort.c:88
#4 0x806ca21 in Py_FatalError () at Python/pythonrun.c:1235
#5 0x806ae30 in PyThreadState_Get () at Python/pystate.c:213
#6 0x80626df in PyErr_Occurred () at Python/errors.c:78
#7 0x80705ce in _PyGC_Insert (op=0x819bedc) at ./Modules/gcmodule.c:504
#8 0x80923c7 in PyTuple_New (size=2) at Objects/tupleobject.c:87
#9 0x401edc9e in wxSize_asTuple (self=0x82a5560) at src/gtk/misc.cpp:1305
#10 0x401edd56 in _wrap_wxSize_asTuple (self=0x0, args=0x842d9fc, kwargs=0x84374d4) at src/gtk/misc.cpp:1328
#11 0x8058b53 in call_cfunction (func=0x8143b48, arg=0x842d9fc, kw=0x84374d4) at Python/ceval.c:2849
#12 0x8058a96 in call_object (func=0x8143b48, arg=0x842d9fc, kw=0x84374d4) at Python/ceval.c:2820
#13 0x805897d in PyEval_CallObjectWithKeywords (func=0x8143b48, arg=0x842d9fc, kw=0x84374d4) at Python/ceval.c:2753
#14 0x809a182 in builtin_apply (self=0x0, args=0x83e9a4c) at Python/bltinmodule.c:90
#15 0x8058b9a in call_cfunction (func=0x80c8880, arg=0x83e9a4c, kw=0x0) at Python/ceval.c:2858
#16 0x8057639 in eval_code2 (co=0x81d7e80, globals=0x81fbbac, locals=0x0, args=0x8423d78, argcount=1, kws=0x8423d7c, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1960
#17 0x8058f54 in fast_function (func=0x81fcb94, pp_stack=0xbfffe074, n=1, na=1, nk=0) at Python/ceval.c:3035
#18 0x80576e6 in eval_code2 (co=0x81d9328, globals=0x81fbbac, locals=0x0, args=0x83e9b60, argcount=2, kws=0x0, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1984
#19 0x8058e59 in call_eval_code2 (func=0x81fd954, arg=0x83e9b54, kw=0x0) at Python/ceval.c:2979
#20 0x8058a82 in call_object (func=0x81fd954, arg=0x83e9b54, kw=0x0) at Python/ceval.c:2818
#21 0x8058d1d in call_method (func=0x81fd954, arg=0x840348c, kw=0x0) at Python/ceval.c:2936
#22 0x8058a6e in call_object (func=0x8429df4, arg=0x840348c, kw=0x0) at Python/ceval.c:2816
#23 0x805897d in PyEval_CallObjectWithKeywords (func=0x8429df4, arg=0x840348c, kw=0x0) at Python/ceval.c:2753
#24 0x807d6cc in instance_item (inst=0x84375cc, i=0) at Objects/classobject.c:983
#25 0x807aa6c in PySequence_GetItem (s=0x84375cc, i=0) at Objects/abstract.c:995
#26 0x805843e in unpack_sequence (v=0x84375cc, argcnt=2, sp=0x841c6dc) at Python/ceval.c:2509
#27 0x8056bab in eval_code2 (co=0x81b8ca8, globals=0x80d3484, locals=0x0, args=0x841d12c, argcount=2, kws=0x841d134, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1576
#28 0x8058f54 in fast_function (func=0x81e30b4, pp_stack=0xbfffe3e4, n=2, na=2, nk=0) at Python/ceval.c:3035
#29 0x80576e6 in eval_code2 (co=0x81bc870, globals=0x80d3484, locals=0x0, args=0x83e9b20, argcount=1, kws=0x0, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1984
#30 0x8058e59 in call_eval_code2 (func=0x8400164, arg=0x83e9b14, kw=0x0) at Python/ceval.c:2979
#31 0x8058a82 in call_object (func=0x8400164, arg=0x83e9b14, kw=0x0) at Python/ceval.c:2818
#32 0x8058d1d in call_method (func=0x8400164, arg=0x83e9b14, kw=0x0) at Python/ceval.c:2936
#33 0x8058a6e in call_object (func=0x81f78ac, arg=0x83e9b14, kw=0x0) at Python/ceval.c:2816
#34 0x80591fb in do_call (func=0x81f78ac, pp_stack=0xbfffe5b4, na=1, nk=0) at Python/ceval.c:3136
#35 0x80576ff in eval_code2 (co=0x81acf20, globals=0x80d3484, locals=0x0, args=0x8352b08, argcount=1, kws=0x8352b0c, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1987
#36 0x8058f54 in fast_function (func=0x83e731c, pp_stack=0xbfffe6c4, n=1, na=1, nk=0) at Python/ceval.c:3035
#37 0x80576e6 in eval_code2 (co=0x81b2d10, globals=0x80d3484, locals=0x0, args=0x841fa98, argcount=2, kws=0x0, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1984
#38 0x8058e59 in call_eval_code2 (func=0x81f65d4, arg=0x841fa8c, kw=0x0) at Python/ceval.c:2979
#39 0x8058a82 in call_object (func=0x81f65d4, arg=0x841fa8c, kw=0x0) at Python/ceval.c:2818
#40 0x8058d1d in call_method (func=0x81f65d4, arg=0x841fa8c, kw=0x0) at Python/ceval.c:2936
#41 0x8058a6e in call_object (func=0x80f8254, arg=0x841fa8c, kw=0x0) at Python/ceval.c:2816
#42 0x80591fb in do_call (func=0x80f8254, pp_stack=0xbfffe894, na=2, nk=0) at Python/ceval.c:3136
#43 0x80576ff in eval_code2 (co=0x81b6488, globals=0x80d3484, locals=0x0, args=0x83e9b88, argcount=2, kws=0x0, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1987
#44 0x8058e59 in call_eval_code2 (func=0x81e3274, arg=0x83e9b7c, kw=0x0) at Python/ceval.c:2979
#45 0x8058a82 in call_object (func=0x81e3274, arg=0x83e9b7c, kw=0x0) at Python/ceval.c:2818
#46 0x8058d1d in call_method (func=0x81e3274, arg=0x841badc, kw=0x0) at Python/ceval.c:2936
#47 0x8058a6e in call_object (func=0x8424c3c, arg=0x841badc, kw=0x0) at Python/ceval.c:2816
#48 0x805897d in PyEval_CallObjectWithKeywords (func=0x8424c3c, arg=0x841badc, kw=0x0) at Python/ceval.c:2753
#49 0x401b4738 in wxPyCallback::EventThunker (this=0x8424da0, event=@0xbfffeab0) at src/helpers.cpp:586
#50 0x404eb975 in wxEvtHandler::SearchDynamicEventTable () from /usr/local/lib/libwx_gtk-2.3.so
#51 0x404eb4bd in wxEvtHandler::ProcessEvent () from /usr/local/lib/libwx_gtk-2.3.so
#52 0x404ca2ad in wxWindow::DoSetSize () from /usr/local/lib/libwx_gtk-2.3.so
#53 0x40535a80 in wxSizerItem::SetDimension () from /usr/local/lib/libwx_gtk-2.3.so
#54 0x40536b06 in wxGridSizer::SetItemBounds () from /usr/local/lib/libwx_gtk-2.3.so
#55 0x40536f92 in wxFlexGridSizer::RecalcSizes () from /usr/local/lib/libwx_gtk-2.3.so
#56 0x40536455 in wxSizer::SetDimension () from /usr/local/lib/libwx_gtk-2.3.so
#57 0x4055186a in wxWindowBase::Layout () from /usr/local/lib/libwx_gtk-2.3.so
#58 0x40542b7f in wxTopLevelWindowBase::OnSize () from /usr/local/lib/libwx_gtk-2.3.so
#59 0x404eb6b2 in wxEvtHandler::SearchEventTable () from /usr/local/lib/libwx_gtk-2.3.so
#60 0x404eb531 in wxEvtHandler::ProcessEvent () from /usr/local/lib/libwx_gtk-2.3.so
#61 0x404a8b7b in wxFrame::GtkOnSize () from /usr/local/lib/libwx_gtk-2.3.so
#62 0x404c1fd8 in wxTopLevelWindowGTK::OnInternalIdle () from /usr/local/lib/libwx_gtk-2.3.so
#63 0x404a8c68 in wxFrame::OnInternalIdle () from /usr/local/lib/libwx_gtk-2.3.so
#64 0x40491eeb in wxApp::SendIdleEvents () from /usr/local/lib/libwx_gtk-2.3.so
#65 0x40491e61 in wxApp::SendIdleEvents () from /usr/local/lib/libwx_gtk-2.3.so
#66 0x40491e13 in wxApp::OnIdle () from /usr/local/lib/libwx_gtk-2.3.so
#67 0x404eb6b2 in wxEvtHandler::SearchEventTable () from /usr/local/lib/libwx_gtk-2.3.so
#68 0x404eb531 in wxEvtHandler::ProcessEvent () from /usr/local/lib/libwx_gtk-2.3.so
#69 0x40491da9 in wxApp::ProcessIdle () from /usr/local/lib/libwx_gtk-2.3.so
#70 0x40491817 in wxapp_idle_callback () from /usr/local/lib/libwx_gtk-2.3.so
#71 0x407ca32a in g_timeout_add () from /opt/gnome/lib/libglib-1.2.so.0
#72 0x407c9308 in g_get_current_time () from /opt/gnome/lib/libglib-1.2.so.0
#73 0x407c9913 in g_get_current_time () from /opt/gnome/lib/libglib-1.2.so.0
#74 0x407c9aac in g_main_run () from /opt/gnome/lib/libglib-1.2.so.0
#75 0x406e97e7 in gtk_main () from /opt/gnome/lib/libgtk-1.2.so.0
#76 0x40491f68 in wxApp::MainLoop () from /usr/local/lib/libwx_gtk-2.3.so
#77 0x401b3b7b in wxPyApp::MainLoop (this=0x8416ff0) at src/helpers.cpp:107
#78 0x401b96e2 in _wrap_wxPyApp_MainLoop (self=0x0, args=0x841cb24, kwargs=0x842a224) at src/gtk/wx.cpp:1332
#79 0x8058b53 in call_cfunction (func=0x81b6398, arg=0x841cb24, kw=0x842a224) at Python/ceval.c:2849
#80 0x8058a96 in call_object (func=0x81b6398, arg=0x841cb24, kw=0x842a224) at Python/ceval.c:2820
#81 0x805897d in PyEval_CallObjectWithKeywords (func=0x81b6398, arg=0x841cb24, kw=0x842a224) at Python/ceval.c:2753
#82 0x809a182 in builtin_apply (self=0x0, args=0x84032ac) at Python/bltinmodule.c:90
#83 0x8058b9a in call_cfunction (func=0x80c8880, arg=0x84032ac, kw=0x0) at Python/ceval.c:2858
#84 0x8057639 in eval_code2 (co=0x819e488, globals=0x8201d94, locals=0x0, args=0x82fb858, argcount=1, kws=0x0, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1960
#85 0x8058e59 in call_eval_code2 (func=0x83e5b3c, arg=0x82fb84c, kw=0x0) at Python/ceval.c:2979
#86 0x8058a82 in call_object (func=0x83e5b3c, arg=0x82fb84c, kw=0x0) at Python/ceval.c:2818
#87 0x8058d1d in call_method (func=0x83e5b3c, arg=0x82fb84c, kw=0x0) at Python/ceval.c:2936
#88 0x8058a6e in call_object (func=0x80d1bb4, arg=0x82fb84c, kw=0x0) at Python/ceval.c:2816
#89 0x80591fb in do_call (func=0x80d1bb4, pp_stack=0xbffff634, na=1, nk=0) at Python/ceval.c:3136
#90 0x80576ff in eval_code2 (co=0x81f5240, globals=0x8201d94, locals=0x0, args=0x80d4e8c, argcount=1, kws=0x80d4e90, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1987
#91 0x8058f54 in fast_function (func=0x82faa84, pp_stack=0xbffff744, n=1, na=1, nk=0) at Python/ceval.c:3035
#92 0x80576e6 in eval_code2 (co=0x81ace18, globals=0x80d3484, locals=0x0, args=0x80cc654, argcount=1, kws=0x80cc658, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1984
#93 0x8058f54 in fast_function (func=0x8202bd4, pp_stack=0xbffff854, n=1, na=1, nk=0) at Python/ceval.c:3035
#94 0x80576e6 in eval_code2 (co=0x81ba710, globals=0x80d3484, locals=0x80d3484, args=0x0, argcount=0, kws=0x0, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:1984
#95 0x8054d79 in PyEval_EvalCode (co=0x81ba710, globals=0x80d3484, locals=0x80d3484) at Python/ceval.c:341
#96 0x806c623 in run_node (n=0x80d6e40, filename=0xbffffbbb "graph_tools.py", globals=0x80d3484, locals=0x80d3484, flags=0xbffff9f8)
    at Python/pythonrun.c:1049
#97 0x806c5da in run_err_node (n=0x80d6e40, filename=0xbffffbbb "graph_tools.py", globals=0x80d3484, locals=0x80d3484, flags=0xbffff9f8)
---Type <return> to continue, or q <return> to quit---
    at Python/pythonrun.c:1036
#98 0x806c5ae in PyRun_FileExFlags (fp=0x80c8300, filename=0xbffffbbb "graph_tools.py", start=257, globals=0x80d3484, locals=0x80d3484, closeit=1,
    flags=0xbffff9f8) at Python/pythonrun.c:1027
#99 0x806b9c1 in PyRun_SimpleFileExFlags (fp=0x80c8300, filename=0xbffffbbb "graph_tools.py", closeit=1, flags=0xbffff9f8) at Python/pythonrun.c:666
#100 0x806b50f in PyRun_AnyFileExFlags (fp=0x80c8300, filename=0xbffffbbb "graph_tools.py", closeit=1, flags=0xbffff9f8) at Python/pythonrun.c:480
#101 0x8051e50 in Py_Main (argc=2, argv=0xbffffa84) at Modules/main.c:320
#102 0x8051908 in main (argc=2, argv=0xbffffa84) at Modules/python.c:10
#103 0x4007f2eb in __libc_start_main (main=0x80518f4 <main>, argc=2, ubp_av=0xbffffa84, init=0x8050da4 <_init>, fini=0x809e89c <_fini>,
    rtld_fini=0x4000c130 <_dl_fini>, stack_end=0xbffffa7c) at ../sysdeps/generic/libc-start.c:129

--
Michael Gilfix
mgilfix@eecs.tufts.edu

For my gpg public key:
http://www.eecs.tufts.edu/~mgilfix/contact.html

`-> (mgilfix)

--
Michael Gilfix
mgilfix@eecs.tufts.edu

For my gpg public key:
http://www.eecs.tufts.edu/~mgilfix/contact.html

Hi Michael,

  Ok, I figured out what the problem is. I have a method for size
events in the base class. I override that in the dervied class and
call the base class first and then do some extra stuff. That causes
that message to appear. Ugh. Can I not do this or is it a bug? Here's
a sample idea of the program:

[snip].

It works for me...though I did a couple of things differently to you:

1. I added an EVT_SIZE macro to the superclass to make sure the "size" event was associated with the method I wanted. I know there are some "magic" method names you can use to use to intercept events like this, but I prefer to include an explicit EVT_SIZE macro to make the linkage clear.

2. I called "event.Skip()" in the superclass's onSize method. This ensures the size event is processed properly.

Below is a quick sample of the code I wrote. So it definitely is possible to add an "onSize" method to the subclass, call the superclass's "onSize" method from the subclass's "onSize" method, and process everything without a hitch.

Anyway, here's the code:

···

#######################################################

class TestFrame(wxFrame):
     def __init__(self):
         wxFrame.__init__(self, None, -1, "Test")

         EVT_SIZE(self, self.onSize)

     def onSize(self, event):
         # Do your own onSize handling here, but make sure you call:
         event.Skip()

class TestFrameSub(TestFrame):
     def __init__(self):
         TestFrame.__init__(self)

     def onSize(self, event):
         TestFrame.onSize(self, event)
         # Subclass's size-handling logic goes here...

#######################################################

Hope this helps...

  - Erik.

  Fatal Python error: PyThreadState_Get: no current thread
  Aborted

[...]

#9 0x401edc9e in wxSize_asTuple (self=0x82a5560) at src/gtk/misc.cpp:1305

Edit src/gtk/misc.cpp and change all the *_asTuple functions to be like
this:

static PyObject * wxSize_asTuple(wxSize *self) {
    wxPyBeginBlockThreads(); // <-- Add this
    PyObject* tup = PyTuple_New(2);
    PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x));
    PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->y));
    wxPyEndBlockThreads(); // <-- and this
    return tup;
}

···

--
Robin Dunn
Software Craftsman
robin@AllDunn.com Java give you jitters?
http://wxPython.org Relax with wxPython!

I take it this will be fixed in the next release?

          -- Mike

···

On Wed, Apr 10 @ 09:13, Robin Dunn wrote:

> Fatal Python error: PyThreadState_Get: no current thread
> Aborted
[...]
> #9 0x401edc9e in wxSize_asTuple (self=0x82a5560) at src/gtk/misc.cpp:1305

Edit src/gtk/misc.cpp and change all the *_asTuple functions to be like
this:

static PyObject * wxSize_asTuple(wxSize *self) {
    wxPyBeginBlockThreads(); // <-- Add this
    PyObject* tup = PyTuple_New(2);
    PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x));
    PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->y));
    wxPyEndBlockThreads(); // <-- and this
    return tup;
}

--
Robin Dunn
Software Craftsman
robin@AllDunn.com Java give you jitters?
http://wxPython.org Relax with wxPython!

_______________________________________________
wxpython-users mailing list
wxpython-users@lists.wxwindows.org
http://lists.wxwindows.org/mailman/listinfo/wxpython-users

`-> (robin)

--
Michael Gilfix
mgilfix@eecs.tufts.edu

For my gpg public key:
http://www.eecs.tufts.edu/~mgilfix/contact.html

I take it this will be fixed in the next release?

Yes.

···

--
Robin Dunn
Software Craftsman
robin@AllDunn.com Java give you jitters?
http://wxPython.org Relax with wxPython!