[GHC] #14291: Tests tend to fail in the ext-interp way when split sections is enabled

GHC ghc-devs at haskell.org
Thu Oct 5 16:05:21 UTC 2017


#14291: Tests tend to fail in the ext-interp way when split sections is enabled
-------------------------------------+-------------------------------------
        Reporter:  bgamari           |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:  8.4.1
       Component:  Compiler          |              Version:  8.2.1
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:  13716
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by bgamari):

 Alright, so let's recap,

 When we enter `base_GHCziException_zdfShowErrorCallzuzdcshowsPrec_info` we
 have two perfectly valid looking arguments (an `I# 0` and a
 `ErrorCallWithLocation` constructor carrying a `:` constructor).

 From there we eventually jump to
 `base_GHCziException_zdwzdcshowsPrec1_info`,
 {{{#!hs
 GHC.Exception.$w$cshowsPrec1 [InlPrag=[0]]
   :: GHC.Base.String -> GHC.Base.String -> GHC.Show.ShowS
 }}}
 Here we have a reasonable-looking cons cell as the first argument. The
 second argument looked a bit suspicious at first but seems to check out
 {{{
 >>> ghc closure $rsi
 THUNK (0x415cf708)
   Ptr: off-heap(0x0)
   Ptr: off-heap(0x400c5ddb)
 >>> ghc sym 0x415cf708
 1216 bytes into base_GHCziException_prettyCallStack_info (starts at
 0x415cf248)
 }}}
 This address appears to correspond to a certain `sat_s4i3 [Occ=Once] ::
 GHC.Base.String`

 We eventually end up entering this thunk. In this thunk we perform a call
 to `base_GHCziStackziTypes_getCallStack_info`
 {{{
 GHC.Stack.Types.getCallStack [Occ=LoopBreaker]
   :: GHC.Stack.Types.CallStack -> [([GHC.Types.Char],
 GHC.Stack.Types.SrcLoc)]
 }}}
 which is given a rather odd looking argument,
 {{{
 >>> print/a $r14
 $13 = 0x400c5ddb
 >>> x/8a $r14 & ~7
 0x400c5dd8:     0x0     0x41453420
 0x400c5de8:     0x0     0x414534c8
 0x400c5df8:     0x0     0x41453520
 }}}
 It looks like **this** is the first real sign of trouble.

  which eventually leads to the crash when it we attempt an indirect jump
 to

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14291#comment:24>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list