
#10231: TMVar - fmap - orElse clashes in ghc 7.8.4 -------------------------------------+------------------------------------- Reporter: ran | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: libraries | Version: 7.8.4 (other) | Keywords: Resolution: | Architecture: x86_64 Operating System: Linux | (amd64) Type of failure: Incorrect result | Test Case: at runtime | Blocking: Blocked By: | Differential Revisions: Related Tickets: | -------------------------------------+------------------------------------- Comment (by fryguybob): When using `unsafePerformIO` to make a global mutable variable like `timerTM` in your program you also need to have a `NOINLINE` pragma `{-# NOINLINE timerTM #-}` to avoid separate variables due to inlining (see [https://wiki.haskell.org/Top_level_mutable_state top level mutable state]): {{{ #!haskell timerTM :: TMVar () {-# NOINLINE timerTM #-} timerTM = unsafePerformIO $ newEmptyTMVarIO resetTM :: TMVar () {-# NOINLINE resetTM #-} resetTM = unsafePerformIO $ newEmptyTMVarIO }}} Can you try your test again with this change? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10231#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler