#4039: problems with semaphores in ghc-6.10.4 unix-2.3.2.0
----------------------------------------------+-----------------------------
    Reporter:  bastl                          |        Owner:              
        Type:  bug                            |       Status:  new         
    Priority:  normal                         |    Milestone:              
   Component:  libraries/unix                 |      Version:  6.10.4      
    Keywords:  unix semaphores newForeignPtr  |   Difficulty:              
          Os:  Linux                          |     Testcase:              
Architecture:  x86_64 (amd64)                 |      Failure:  None/Unknown
----------------------------------------------+-----------------------------
Description changed by igloo:

Old description:

> module Main ( main ) where
>
> import System ( getArgs )
> import Control.Monad
> import Data.List
> import System.Posix.Semaphore
> import System.Posix.Files
>
> main = do
>   c <- liftM (head . head) getArgs
>   putStrLn $ "Writing " ++ [c] ++ " to file foo"
>   s <- semOpen "fooSemaphor" (OpenSemFlags True False) ownerModes 1
>   semWait s
>   appendFile "foo" $ replicate 99999999 c
>   semPost s
>   semUnlink "fooSemaphor"
>   putStrLn $ "Done writing " ++ [c]
>

> When called like this "./locking2 a & ./locking2 b" I get:
>
> locking2: fooSemaphor: semUnlink: does not exist (No such file or
> directory)
> locking2: error: a C finalizer called back into Haskell.
>    This was previously allowed, but is disallowed in GHC 6.10.2 and
> later.
>    To create finalizers that may call back into Haskll, use
>    Foreign.Concurrent.newForeignPtr instead of Foreign.newForeignPtr.
>
> I dont know what this means, but it looks as if some things are going
> wrong internally.

New description:

 {{{
 module Main ( main ) where

 import System ( getArgs )
 import Control.Monad
 import Data.List
 import System.Posix.Semaphore
 import System.Posix.Files

 main = do
   c <- liftM (head . head) getArgs
   putStrLn $ "Writing " ++ [c] ++ " to file foo"
   s <- semOpen "fooSemaphor" (OpenSemFlags True False) ownerModes 1
   semWait s
   appendFile "foo" $ replicate 99999999 c
   semPost s
   semUnlink "fooSemaphor"
   putStrLn $ "Done writing " ++ [c]
 }}}

 When called like this "./locking2 a & ./locking2 b" I get:
 {{{
 locking2: fooSemaphor: semUnlink: does not exist (No such file or
 directory)
 locking2: error: a C finalizer called back into Haskell.
    This was previously allowed, but is disallowed in GHC 6.10.2 and later.
    To create finalizers that may call back into Haskll, use
    Foreign.Concurrent.newForeignPtr instead of Foreign.newForeignPtr.
 }}}
 I dont know what this means, but it looks as if some things are going
 wrong internally.

--

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4039#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to