
#10375: arm: ghci hits an illegal instruction -------------------------------------+------------------------------------- Reporter: erikd | Owner: Type: bug | Status: new Priority: high | Milestone: 7.10.3 Component: Runtime System | Version: 7.10.1 (Linker) | Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: arm Type of failure: GHCi crash | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: -------------------------------------+------------------------------------- Changes (by erikd): * component: GHCi => Runtime System (Linker) Comment: All the previous debugging had produced confusing, contradictory and un- repeatable results so I dropped back to simple wolf-fence debugging with `putStrLn` and over about 3 hours managed to narrow this down to the function `GhciMonad.turnOffBuffering`. Modifying that function as follows: {{{ turnOffBuffering :: IO () turnOffBuffering = do putStrLn "turnOffBuffering start" hdls <- mapM getHandle [stdin_ptr,stdout_ptr,stderr_ptr] putStrLn "turnOffBuffering middle" mapM_ (\h -> hSetBuffering h NoBuffering) hdls putStrLn "turnOffBuffering end" }}} and running the previous test results in: {{{ GHCi, version 7.11.20150910: http://www.haskell.org/ghc/ :? for help turnOffBuffering start turnOffBuffering middle Illegal instruction }}} so that it seems that calling `hSetBuffering` causes the crash. However, `hSetBuffering` is not the problem. Rather, `hSetBuffering` is the first function to be run from the `Base` package which is loaded with the runtime linker. Seeing this reminded me of #2972 which was a linker problem, so modifying the "Component" field of this ticket to reflect that. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10375#comment:45 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler