[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2005-02-06 (14:01) |
From: | julius <flute@n...> |
Subject: | Re: [Caml-list] Segfault using malloc within stubs |
Actually, this is just un exemple that illustrates the real function I used. We can add some use of the test pointer and result value but it changes nothing: in this function you can't do anything that someway malloc the test pointer. As you say it's very weird and much disapointing :) Julius PS: In my implementation, test is given to a function that use it to stock its result (after malloc it), and result is a caml value pointing to some calculus result. The end is same: segfault... Remi Vanicat wrote: > On Sun, 06 Feb 2005 08:38:06 +0100, julius <flute@noos.fr> wrote: > > >> Hello, >> >> I have this strange problem with my stubs, I wrote this function but it >> leads to a segfault: >> >> CAMLprim value foo(value v) >> { >> CAMLparam1(v); >> CAML(result); >> char** test; >> >> test=(char**)malloc(4*sizeof(char*)); >> CAMLreturn(result); >> } >> >> After much tests, it seems that malloc is not allowed when using Caml >> data types or when trying to register data to the ocaml garbage >> collector... But I don't understand why as C heap and OCaml heap are >> distinct :-/ >> > > > It seem weird. First of all, mallocs are explicitly allowed in the > doc. So the problem must be somewhere else. I see that in this code, > the test pointer is never used, but throw away, and this could lead to > a memory leak. Also the result variable is never set, so this is > probably the problem. Try to add a result=Val_unit; somewhere in your > code to see if the problem goes away. I forget : I don't know what > CAML(result) mean. Did you want to use CAML_local1(result) ? may be > this is the problem. > > > >