This message was posted to ruby-talk, but I didn't get responce from 
there. Maybe I will get help here, because I don't understand what happens.

I've written extension in C for ruby and created test case for it. When 
I've run it ruby eat all memory. I've simplified code as I can and here 
is what I get:

 > cat test.c
#include "ruby.h"

typedef struct test_info {
     char *dummy;
} TestInfo;

static VALUE rb_cTest;

static VALUE test_free( TestInfo *info ) {
     rb_warn( "this warning makes ruby mad when used with test/unit" );
     if ( info ) free( info );
}

static VALUE test_s_allocate( VALUE klass ) {
     return Data_Wrap_Struct( klass, 0, test_free, 0 );
}

static VALUE test_initialize( VALUE self ) {
     DATA_PTR( self ) = ALLOC( TestInfo );
     return self;
}

void Init_mytest() {
     rb_cTest = rb_define_class( "MyTest", rb_cObject );
     rb_define_alloc_func( rb_cTest, test_s_allocate );
     rb_define_method( rb_cTest, "initialize", test_initialize, 0 );
}

 > cat extconf.rb
require "mkmf"

create_makefile("mytest")

 > cat test.rb
#!/usr/local/bin/ruby -w

require 'test/unit'
require 'mytest'

t = MyTest.new
 > ruby -v
ruby 1.8.0 (2003-06-20) [i386-freebsd5.1]

Note, if I remove "require 'test/unit'" line or rb_warn from extension 
everything is ok.

-- 
Eugene Scripnik
IT Group
Software Architect
Tel./Fax +380 (372) 58-43-10
email: Eugene.Scripnik / itgrp.net
http://www.itgrp.net/