SWIG / Ruby GC issues

Hi all,

I have this really nasty SWIG/ruby GC issue. (Namely objects are being
freed when I don’t want them to be freed).

These bugs are hard to track down, here’s what would really help me:

Is there some way I can tell ruby that when it frees an object, to
ZERO
out that entire region in memory? It’ll make tracking down the bug so
much
easier.

Thanks!

redroofgreentree wrote:

Thanks!

Well … I guess I would start off by saying, “gdb is your friend”. :slight_smile:
But all SWIG does is generate wrapper/interface code between the Ruby
and the C or C++ code. Can you make this work without SWIG?

M. Edward (Ed) Borasky wrote:

redroofgreentree wrote:

I have this really nasty SWIG/ruby GC issue. (Namely objects are being
freed when I don’t want them to be freed).

Well … I guess I would start off by saying, “gdb is your friend”. :slight_smile:
But all SWIG does is generate wrapper/interface code between the Ruby
and the C or C++ code. Can you make this work without SWIG?

SWIG does help with memory management,; there’s an unusually helpful
section on GC in the SWIG docs, which repays close reading
http://www.swig.org/Doc1.3/Ruby.html#Ruby_nn57

You definitely need a debugger to identify what’s getting prematurely
destroyed, but once you have a stack trace which shows what method is
being called on a deleted object, it’s normally not hard to write a
%markfunc to protect it

alex

On Sun, Oct 28, 2007 at 01:31:10PM +0900, redroofgreentree wrote:

I have this really nasty SWIG/ruby GC issue. (Namely objects are being
freed when I don’t want them to be freed).

These bugs are hard to track down, here’s what would really help me:

Is there some way I can tell ruby that when it frees an object, to ZERO
out that entire region in memory? It’ll make tracking down the bug so much
easier.

Valgrind often helps in tracking down these sorts of issues. You’ll
need a suppressions file; the one I use is located at:

http://rubystuff.org/ruby.supp

Paul