At Mon, 20 Aug 2012 20:31:05 +0400, Dmitry Pavlov wrote: > (define _handler (_fun _int _pointer -> _int))
The `_pointer' C type means a reference to memory that is not managed by the GC. Change the `_pointer' above to `_gcpointer', since the handler receives a pointer that is managed by the GC. > (define-libintegrator myfunc (_fun _int _pointer _handler -> _int)) In contrast, the difference between `_pointer' and `_gcpointer' doesn't matter here, because there's not really a difference between `_pointer' and `_gcpointer' for a value flowing into C. The difference between `_pointer' and `_gcpointer' matters for values flowing back to Racket (either as a foreign result or as an argument to a Racket-implemented callback). Debugging/testing tip: When you have a callback function, try adding `(collect-garbage)' in the callback to try to expose memory-management problems. In this case, adding `(collect-garbage)' in the callback function makes the bad result consistent. ____________________ Racket Users list: http://lists.racket-lang.org/users