Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
[Caml-list] GC and preventing data relocation
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2003-03-20 (15:16)
From: Markus Mottl <markus@o...>
Subject: [Caml-list] GC and preventing data relocation

I have just started to integrate a new feature into PCRE-OCaml that
would allow callbacks ("callouts") during pattern matching. However,
if I'm not mistaken, there is a severe problem for which I don't know
any good workaround:

Among other things, my C-function gets a string value and passes it to
a C-library for pattern matching together with information on what to
do in the case of "callouts" in the regular expression. If the C-engine
detects such an indicator, my wrapper code is called again and receives
the callout data (e.g. an array of callout closures provided by the

When my code calls OCaml again via one of those closures, this may,
of course, trigger the GC. Unfortunately, the GC may feel like moving
data around, e.g. the string which is currently still in use by the
C-engine of the library. Needless to say that this may cause trouble!
Copying the string internally into the C-heap to prevent this would be
really bad due to performance/memory reasons...

Since there is no way for me to tell the C-library to continue with a
new location of the string, I'd like to know whether there is any way
to prevent the GC from moving specific data?

Best regards,
Markus Mottl

Markus Mottl                                   
Austrian Research Institute
for Artificial Intelligence        

To unsubscribe, mail Archives:
Bug reports: FAQ:
Beginner's list: