[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