I finally managed to fix the seg-fault. Brandon and Branimir you were as always right ;-) . Problem was in the external function definition. After changing it to 'stdcall' everything works fine. for further reference working code below: foreign import stdcall safe "setmodulestring" c_setmodulestring :: CString -> CUInt -> CString -> CUInt -> CInt -> IO CInt --all 3 versions work fine: setmodulestring param value = do cParam <- newCString param cValue <- newCString value let cParamLength = fromIntegral $ length param ::CUInt cValueLength = fromIntegral $ length value ::CUInt setVarInArray = (-1)::CInt result <- c_setmodulestring cParam cParamLength cValue cValueLength setVarInArray free cParam free cValue return result setmodulestring2 param value = do let cParamLength = fromIntegral $ length param ::CUInt cValueLength = fromIntegral $ length value ::CUInt setVarInArray = (-1)::CInt B.useAsCString (B.pack param) $ \cParam -> do B.useAsCString (B.pack value) $ \cValue -> do result <- c_setmodulestring cParam cParamLength cValue cValueLength setVarInArray return result setmodulestring3 param value = withCString param $ \cParam -> do withCString value $ \cValue -> do result <- c_setmodulestring cParam cParamLength cValue cValueLength setVarInArray return result where cParamLength = fromIntegral $ length param ::CUInt cValueLength = fromIntegral $ length value ::CUInt setVarInArray = (-1)::CInt thank you cafe, for helping me along this ;-) On Sun, Mar 16, 2014 at 11:57 PM, Miro Karpis <miroslav.karpis@gmail.com>wrote:
sorry,...yes it works with -fno-ghci-sandbox (no seg.fault)
On Sun, Mar 16, 2014 at 11:47 PM, Brandon Allbery <allbery.b@gmail.com>wrote:
On Sun, Mar 16, 2014 at 6:38 PM, Miro Karpis <miroslav.karpis@gmail.com>wrote:
after looking a bit more I can see that the ffi call does what it should do, but it crashes right after that. As mentioned before in ghci everything runs fine.
I don't think I got an answer to this before: does it still work in ghci if you run it with
ghci -fno-ghci-sandbox
?
-- brandon s allbery kf8nh sine nomine associates allbery.b@gmail.com ballbery@sinenomine.net unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net