Hi Bas, On Sun, Jun 17, 2012 at 05:11:35PM +0200, Bas van Dijk wrote: > > module Main where > > import Foreign > import qualified Foreign.Concurrent as FC > import Control.Concurrent > import Bindings.Libusb.InitializationDeinitialization > > main :: IO () > main = do > ctxPtr <- alloca $ \ctxPtrPtr -> do > _ <- c'libusb_init ctxPtrPtr > peek ctxPtrPtr > > fp <- newForeignPtr p'libusb_exit ctxPtr > -- fp <- FC.newForeignPtr ctxPtr $ c'libusb_exit ctxPtr > > threadDelay 3000000 > print $ fp == fp
What happens if you just call c'libusb_exit ctxPtr at the end, instead of using a finalizer? Are you able to reproduce this with just a .c file that is compiled and linked with the program, rather than needing libusb? That would make it easier to reproduce, to understand, and to add a test. Thanks Ian _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users