Re: FFI callback is broken in last git version
Matthew Fluet <[email protected]> Thu, 29 Sep 2016 09:56:32 -0400
| Newsgroups | gmane.comp.lang.ml.mlton.user |
|---|---|
| Message-ID | <CAMrhFL707dqPy6mLu6LwU0JZJ3C0=dvE9CFw=xyKkBhe4J5eiQ@mail.gmail.com> |
In your example, you _import "foo", but your C code defines "baz". But, other than that, I don't see anything wrong with the code, and you should be able to pass an "int ref" to a C function, update it, and then observe the update back in the SML code. On Thu, Sep 29, 2016 at 9:41 AM, Kostirya <[email protected]> wrote: > I found, thank you. > But I do not know how to fix it. > I'll try to describe on simplified example > > SML code: > > val foo_ffi = _import "foo" reentrant: int ref -> unit; > > fun foo () = > let > val r = ref 0 > val _ = foo_ffi(r) > in > !r > end > > C code: > > void baz (int * r) { > *r = 10; // There is Segmentation fault !!! > return; > } > > gdb: > #4 0x00000000004212b4 in MLton_init (argc=<error reading variable: Cannot > access memory at address 0x7ff2ce3ef174>, > argv=<error reading variable: Cannot access memory at address > 0x7ff2ce3ef168>, > s=<error reading variable: Cannot access memory at address > 0x7ff2ce3ef160>) at platform.c:20 > Backtrace stopped: previous frame inner to this frame (corrupt stack?) > > N.B. This only for 64 bit Linux. 32 bit - OK. > > 2016-09-29 14:56 GMT+03:00 Matthew Fluet <[email protected]>: >> >> On Thu, Sep 29, 2016 at 7:14 AM, Kostirya <[email protected]> wrote: >> > Another question. >> > My 32byt application is work fine - "reentrant" helped. >> > But I have problems with 64bit version: segmentation fault is sometimes. >> > Tell me, please, how it is possible to catch. >> > As I can enable debug symbol for coredump? >> >> Sure, "mlton -debug true z.mlb" will compile the generated .c and .s >> files with "-g" and will link with a runtime system itself compiled >> with "-g". The latter won't be as helpful if you don't have the MLton >> sources around, so best to use with a local build of the compiler. >> >> > >> > 2016-09-29 10:54 GMT+03:00 Florian Weimer <[email protected]>: >> >> >> >> > By the way, what does "reentrant" do? >> >> > I guess it turns GC, among other things. At least this seemed to me >> >> > when >> >> > I >> >> > was exploring rare segmentation faults with MLton 20130715. >> >> >> >> It performs additional bookkeeping required so that C code can safely >> >> call back into SML code. This has some overhead, so it is not enabled >> >> by default. >> >> >> >> -- >> >> You received this message because you are subscribed to the Google >> >> Groups >> >> "MLton-user" group. >> >> To unsubscribe from this group and stop receiving emails from it, send >> >> an >> >> email to [email protected]. >> >> >> >> >> >> >> >> >> >> ------------------------------------------------------------------------------ >> >> _______________________________________________ >> >> MLton-user mailing list >> >> [email protected]; [email protected] >> >> https://lists.sourceforge.net/lists/listinfo/mlton-user >> > >> > >> > -- >> > You received this message because you are subscribed to the Google >> > Groups >> > "MLton-user" group. >> > To unsubscribe from this group and stop receiving emails from it, send >> > an >> > email to [email protected]. >> > >> > >> > ------------------------------------------------------------------------------ >> > >> > _______________________________________________ >> > MLton-user mailing list >> > [email protected]; [email protected] >> > https://lists.sourceforge.net/lists/listinfo/mlton-user >> > >> >> -- >> You received this message because you are subscribed to the Google Groups >> "MLton-user" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> >> >> >> ------------------------------------------------------------------------------ >> _______________________________________________ >> MLton-user mailing list >> [email protected]; [email protected] >> https://lists.sourceforge.net/lists/listinfo/mlton-user > > > -- > You received this message because you are subscribed to the Google Groups > "MLton-user" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > > ------------------------------------------------------------------------------ > > _______________________________________________ > MLton-user mailing list > [email protected]; [email protected] > https://lists.sourceforge.net/lists/listinfo/mlton-user > -- You received this message because you are subscribed to the Google Groups "MLton-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. ------------------------------------------------------------------------------