GHCI/FFI/GMP/Me madness
Carsten Schultz
carsten at codimi.de
Tue Aug 10 08:19:40 EDT 2004
Hi!
On Tue, Aug 10, 2004 at 12:59:46PM +0100, Simon Marlow wrote:
> On 09 August 2004 16:57, Remi Turk wrote:
>
> > Hm, I _was_ aware of mp_set_memory_functions being used by the RTS.
> > I've seen it often enough in ltrace's ;)
> > It does indeed sound rather plausible (and making big allocations
> > and such does indeed cause it to happen earlier).
> >
> > At which point my next question is: what now? I don't feel really
> > confident about my GHC-hacking skills (huh? skills? where? ;) so
> > does that mean I'm out of luck?
> > *looks* Am I correct that I'd have to copy any GMP-allocated
> > memory to my own memory before returning from C and vice-versa?
> > I hope not :(
>
> GHC's use of GMP does cause problems if you want to use GMP for your own
> purposes, or if you link with external code that wants to use GMP. The
> real problem is that GMP has internal state, which means it can't be
> used in a modular way. But there's not much we can do about that.
>
> Possibilities:
>
[...]
> - reset GMP's memory allocators before calling it from your code,
> and set them back to the RTS allocators afterward. Slow, but it
> should work. It doesn't solve the problem properly though: external
> libraries which use GMP are still broken.
I would be careful though:
http://www.swox.com/gmp/manual/Custom-Allocation.html
Be sure to call mp_set_memory_functions only when there are no
active GMP objects allocated using the previous memory functions!
Usually that means calling it before any other GMP function.
Greetings,
Carsten
--
Carsten Schultz (2:38, 33:47), FB Mathematik, FU Berlin
http://carsten.codimi.de/
PGP/GPG key on the pgp.net key servers,
fingerprint on my home page.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://www.haskell.org//pipermail/glasgow-haskell-users/attachments/20040810/4947c0fa/attachment.bin
More information about the Glasgow-haskell-users
mailing list