Hi,

you don't say how you processed that example .gc file with GreenCard,
but I'm guessing you used the '--target ghc' option. If that's the case,
have
a look at

  http://www.haskell.org/greencard/type-sig.html#SEC-BODY

which discusses safe vs. unsafe calls -- i.e., in your case you need to
change
the %code below to %safecode. (Alternatively, use the -S option).

hth
--sigbjorn

----- Original Message -----
From: "Chen Yu" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, November 22, 2001 03:42
Subject: greencard bug


> Hi, there
>    I am using Greencard with Hask's foreign function export. I found
> the following program can cause seg-fault. Anyone has any idea? BTW,
> if I replace greencard with Hask's foreign function import, there
> is no such error.
>
> in ABC.gc:
>
> foreign export ccall "h_add" h_add :: Int -> IO Int
> h_add a = do
>     putStrLn "in haskell callback"
>     return (a + 1)
>
> %fun add ::  Int -> IO(Int)
> %call (int a)
> %code int r;
> %     r = c_add (a);
> %result (int r)
>
> and the result is like:
>
> in c callback
> in haskell callback
> Segmentation Fault
>
>
>
>
> in add.c:
>
> _RESULT c_add(int a) {
>     printf("in c callback\n");
>     return h_add(a);
> }
>
>
> TIA!
>
> ------
> chenyu
> in Main.hs:
>
> main = do
>     a <- add 127
>     putStrLn (show a)
>



_______________________________________________
Glasgow-haskell-bugs mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to