Okay, I've gotten poly to crash for a simpler example (as reproducing
my exact gtk build would a pain...). It seems that the process
receives a SIGKILL whenever it tries to load code linking Carbon,
which GTK-OSX has the misfortune of doing. Here's how to reproduce the
bug on OS X:

/* diff.c */
int difference (int x, int y) {
    return x > y ? x - y : y - x;
}

# test.ML
open CInterface;
val lib = load_lib "libdiff.so";
val diff = call2 (load_sym lib "difference") (INT,INT) INT;
val d = diff (2,3);


Now, running these commands works as expected:
$ gcc -c diff.c
$ gcc -shared diff.o -o libdiff.so
$ poly --use test.ML


But these cause poly to receive a SIGKILL:
$ gcc -c diff.c
$ gcc -framework Carbon -shared diff.o -o libdiff.so
$ poly --use test.ML
...
val lib = ?: dylib
val diff = fn: int * int -> int
[1]    64760 killed     poly --use test.ML

Any ideas? Since Carbon is deprecated, I suspect it is coming in to
conflict with something used by poly, but I haven't been able to track
it down.


On 24 June 2012 01:47, Aleks Kissinger <[email protected]> wrote:
> Any idea why calling symbols from certain shared libraries would cause
> poly/ML to crash on OS X? Example:
>
>> val gtk = load_lib "libgtk-quartz-2.0.dylib";
> val gtk = ?: dylib
>> val gtk_init = call2 (load_sym gtk "gtk_init") (INT,INT) VOID;
> val gtk_init = fn: int * int -> unit
>> gtk_init(0,0);
> [1]    96630 killed     rlwrap -z  poly
>
> This (or rather, the equivalent) code works fine on linux, and
> "libgtk-quartz-2.0.dylib" will link with C code in OS X with no
> problems. It seems to only do this for some libraries. For instance,
> the "difference" example from the poly docs
> (http://www.polyml.org/docs/CInterface.html) also works fine on OS X.
_______________________________________________
polyml mailing list
[email protected]
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml

Reply via email to