From: Eric B. <er...@go...> - 2008-03-01 08:11:01
|
Colin Paul Adams wrote: >>>>>> "Eric" == Eric Bezault <er...@go...> writes: > > Eric> If the problem comes from gec, it might be a consequence of > Eric> that: > > Eric> * When gec compiles an application with the Boehm GC, it > Eric> now generates code that will let the GC trigger the feature > Eric> `dispose' when objects are reclaimed. > > Eric> You can try to edit the file > Eric> $GOBO/tool/gec/runtime/c/ge_gc.h and replace line 68: > > Eric> #define GE_register_dispose(obj, disp) > Eric> GC_REGISTER_FINALIZER((void*)(obj), (void (*) (void*, > Eric> void*)) &GE_boehm_dispose, (void*)(disp), NULL, NULL) > > Eric> by: > > Eric> #define GE_register_dispose(obj, disp) /* do nothing */ > > Eric> and then recompile gestalt. > > This works. So it's either a problem in the way I use Boehm's finalizer registration (in particular I pass a function pointer where a void* is expected!), or a problem in Boehm's finalization, or a problem in the implementation of `dispose'. I would favor the first alternative considering that what you say below. > But note that I do not have the problem on my 32-bit system (I > tried both before and after an svn update), so it might be a problem > with Boehm gc 7.0 on 64-bit systems. I will try a newer version. OK. -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |