I'm developing a reasonably complex plugin for GIMP 2.4 in C++ (using GIMP
and libgimp 2.4.2 on Ubuntu 7.10), and am currently having trouble with a 
Heisenbug: after running my plugin with a particular set of parameters, 
when I exit GIMP, I often (~90% of the time) get the following error:

   Gimp-Base-WARNING **: tile ref count balance: 1858

   gimp: terminated: Aborted

(where the number following 'balance' may vary).  I've spent quite a while 
trying to track this down in my code without any luck -- random things 
seem to affect it, but valgrind doesn't report any rogue pointers, etc.

Is there any way to either trace the ref/deref of tiles, or at least get 
the tile ref balance via libgimp?  I've dug around in the source, without 
finding much of use -- libgimp/gimptile.h includes ref and unref calls, 
but no way to check the current ref count.  The warning is generated from 
app/base/tile-swap.c::tile_swap_exit() by calling tile_global_refcount(), 
but this is defined in app/base/tile.h, and does not appear to be exposed 
to plugins.

I'm at a bit of a loss, as I'm not doing *any* tile management on my own 
(e.g. no pixel region calls, nor any calls to ligimp/gimptile.h 
functions) -- the plugin is purely generative, making use of the various 
tools and a few standard plugins.

Any suggestions on how to go about debugging this would be greatly 
appreciated -- while this isn't actually stopping my plugin from working, 
it's hardly good form to make GIMP crash on exit. :-)

Thanks in advance,

Gimp-developer mailing list

Reply via email to