UnsafeReenter test fails with threaded1 and threaded2
/tmp/ghctest-n4fi8zlk/test spaces/./ffi/should_fail/UnsafeReenter.run UnsafeReenter [bad exit code] (threaded1)
/tmp/ghctest-n4fi8zlk/test spaces/./ffi/should_fail/UnsafeReenter.run UnsafeReenter [bad exit code] (threaded2)
It's a quite simple program:
{-# LANGUAGE ForeignFunctionInterface #-}
-- | Test that unsafe FFI calls crash the RTS if they attempt to re-enter
-- Haskell-land
module Main where
import Foreign
foreign import ccall "wrapper" wrap_f :: IO () -> IO (FunPtr (IO ()))
foreign import ccall unsafe hello :: FunPtr (IO ()) -> IO ()
f :: IO ()
f = putStrLn "Back in Haskell"
main :: IO ()
main = do
putStrLn "In Haskell"
wrap_f f >>= hello
putStrLn "Finished"
This just seem to hang (until timeout) with the threaded1 and threaded2 ways, instead of erroring out with:
UnsafeReenter: schedule: re-entered unsafely.
Perhaps a 'foreign import unsafe' should be 'safe'?
which is the expected behaviour. I'll mark the test broken for those 2 ways in an upcoming patch, but this probably deserves a new ticket, so here it is.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.5 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Runtime System |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |