Ticket #3473 (closed bug: fixed)
System.Posix.Semaphore shouldn't create finalizers with Foreign.newForeignPtr
| Reported by: | kaol | Owned by: | simonmar |
|---|---|---|---|
| Priority: | normal | Milestone: | 6.12.1 |
| Component: | libraries/unix | Version: | 6.10.4 |
| Keywords: | Cc: | ||
| Operating System: | Linux | Architecture: | x86 |
| Type of failure: | Difficulty: | Unknown | |
| Test Case: | Blocked By: | ||
| Blocking: | Related Tickets: |
Description
Running this program
import System.Posix.Semaphore
main = do
s <- semOpen "c" (OpenSemFlags True False) 0666 1
semThreadWait s
v <- semGetValue s
putStrLn "Type!"
a <- getLine
putStrLn $ "OK, " ++ a
semPost s
fails like this:
Type! abc OK, abc sem: 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.
The attached patch for libraries/unix/System/Posix/Semaphore.hsc should fix this.
Attachments
Change History
Note: See
TracTickets for help on using
tickets.

