FFI changes?

Dominick Samperi djsamperi at gmail.com
Thu Jan 26 21:07:27 UTC 2023


Hello,

I have been working with a program that uses FFI to communicate with R for
several
years, but today there is a segmentation fault while importing functions or
data from R.
Before giving up on this project, I'm posting a few detail here, in case
anybody has
ideas...perhaps something changed with FFI?

I tried going back to the version of R and ghc where it worked using stack,
but no luck.
The Haskell code is a modification of the code in the package hR (by Dylan
Simon),
and here is a function that fails that worked before. It fails with a seg
fault
on the call to r_install. (s = "parse" when it fails)...

foreign import ccall safe "Rf_install" r_Install :: CString -> IO R_EXP
rInstall :: String -> IO REXP
rInstall s = withCString s r_Install >>= extREXP

The types are defined as follows...

extREXP :: R_EXP -> IO REXP
extREXP = newForeignPtr_

data REXPREC

type R_EXP = Ptr REXPREC

type REXP = ForeignPtr REXPREC

newtype SEXP a = SEXP { unSEXP :: REXP } deriving (Eq, Show)

Please let me know if you see anything obviously wrong and in need
of improvement, perhaps because of changes to the FFI.

Thanks,
Dominick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20230126/8c238cb7/attachment.html>


More information about the ghc-devs mailing list