Hi,
Thank you for narrowing the error down.  It should now be fixed.

There were a lot of cases where code that worked correctly on the native address versions failed in the 32-in-64 version and had to be modified. I'm sure there are still some cases that haven't been tested.

Regards,
David

On 24/01/2019 08:08, Kostirya wrote:
Hello.
I localized the error finally. Whew!
Yes, it is *only* on 32-in-64 and it is reproducible with 100% on
FreeBSD and CentOS.
I prepared simple code for reproduce the error.
It is FFI callback.


cat callback.c
void foo ( int n, void (*fn) (int) ) {
         int i = 1;
         while (n--) {
                 (*fn)(i++);
         }
         return;
}


cat cb-poly.sml
open Foreign
val mylib = loadLibrary "callback.so"
val foo = buildCall2 ((getSymbol mylib "foo"), (cInt, cFunction), cVoid)
val cb = buildClosure1 ((fn v => print ((Int.toString v) ^ "\n")), cInt, cVoid)
val _ = foo(3, cb)


cc -shared -o callback.so callback.c
_______________________________________________
polyml mailing list
polyml@inf.ed.ac.uk
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml

Reply via email to