[pygtk] Occasional gobject assertion errors
Johan Dahlin
jdahlin at async.com.br
Thu Mar 16 05:14:11 WST 2006
> That would be extremely challenging. This is a large app that successfully
> processes commodity exchange price data over a period of several days before
> croaking. Large app + highly dynamic input + very low frequency of
> occurrence ==> a very hard problem to reproduce. We can run using
> historical data, but using it cuts out major elements of our infrastructure,
> including the part where the error occurs, so that's not an option...
>
> Is it possible to coax Gtk into telling us more about the problem, like the
> type of the object it's complaining about?
James told me that it's likely that you have a closure leak.
If you have more than 32767 reference to the same closure you'll get the
warnings you are seeing.
You can probably reproduce faster if you modify the number of bits that is
allocated for the ref_count in gobject/gclosure.h. If you set it to say 8 or
9 bits it should hit the problem much faster, but it would obviously require
a recompiled GObject.
I looked a the changes between PyGTK 2.4 and 2.6 and it doesn't really seem
to be any changes related to closures. Can you try running under PyGTK 2.4
and GObject/Gtk+ 2.6?
If you break in gdb, and go to 4th frame (pygobject_emit) and then run
PyString_AsString(PyObject_Repr(args)) you should be able to see which
object it is running emit() on. Might require debugging symbols.
--
Johan Dahlin <jdahlin at async.com.br>
Async Open Source
More information about the pygtk
mailing list