
#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: -------------------------------------+------------------------------------- Comment (by erikd): Debugging with GDB was too un-reliable, even with Virtual Address randomization disabled in the Linux kernel and master tick timer disabled (`+RTS -V0 -RTS`). However, running with `+RTS -Da -RTS` I noticed that one of the last things the program did before crashing was to print out a `BCO` (Bycode compiled object). Unfortunately, the output with `-Ds` was simply way too verbose. Adding some custom debug which was only activated after the BCO was loaded showed that the crash (sometimes SIGILL, sometimes SIGSEGV) was happening some time after the call to `StgRun` in `rts/Schedule.c`. Since, the crash after calling `StgRun` happens immediately after loading the BCO, my suspicion is that the `StgRun` call is actually calling the recently loaded BCO. My custom debug shows something along the lines of (eliding irrelevant stuff): {{{ StgRun call 128 StgRun call 129 StgRun call 130 BCO 0: PUSH_ALTS 0xb39c2d08 2: PUSH_L 2 4: ENTER INSTRS: 6 0 2 2 46 PTRS: 0xb39c2d08 SthRun call 131 Segmentation fault }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10375#comment:60 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler