GHCI/FFI/GMP/Me madness

Carsten Schultz carsten at
Tue Aug 10 08:19:40 EDT 2004


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:

   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.



Carsten Schultz (2:38, 33:47), FB Mathematik, FU Berlin
PGP/GPG key on the 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 :

More information about the Glasgow-haskell-users mailing list