At Sun, 5 Aug 2012 15:02:10 -0600, Matthew Flatt wrote:
> Beware that FFI callback memory management is slightly tricky with
> scheme_add_managed():
I've added an `ffi/unsafe/custodian' library with a
`register-custodian-shutdown' function to make this easier.
The `register-custodian-shutdown' function also helps with a related
problem: calling a shutdown callback when Racket exits. Most resources
are released when the Racket process exits, but if an explicit release
is needed, supply `#:at-exit? #t'.
Of course, while `register-custodian-shutdown' makes custodian
registration easier, there are still many low-level issues to consider
--- such as the fact that the callback is invoked atomically in an
unspecified Racket thread --- which is why it's under `ffi/unsafe'.