[GHC] #14675: GHC 8.4.1 regression: segfault when loading doctest on a module with ANNs on Ubuntu 16.04 or later

GHC ghc-devs at haskell.org
Wed Jan 24 17:34:30 UTC 2018


#14675: GHC 8.4.1 regression: segfault when loading doctest on a module with ANNs
on Ubuntu 16.04 or later
-------------------------------------+-------------------------------------
        Reporter:  RyanGlScott       |                Owner:  alpmestan
            Type:  bug               |               Status:  new
        Priority:  highest           |            Milestone:  8.4.1
       Component:  GHC API           |              Version:  8.4.1-alpha1
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  Runtime crash     |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #14603            |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by alpmestan):

 I ended up chasing down the problem with `gdb` a little bit but didn't
 really know where to break and stepping through everything was just not
 conceivable so I ended up going about it the good old way, by printing a
 bunch of things along the code path that leads to the error.

 Long story short, it looks like the `unsafeCoerce#` from
 `compiler/typecheck/TcSplice.hs:convertAnnotationWrapper` is the cause of
 the segfault. And the content of the annotation doesn't seem to matter,
 even `{-# ANN module () #-}` makes the program crash.

 You can see
 [https://gist.github.com/alpmestan/145fc5783f00bab9214b7302418aef49 here]
 my variant of `convertAnnotationWrapper` that prints a bunch of things all
 along, as well as the relevant section of the output (the "trace"). The
 program never makes it to "unsafeCoerce# went fine".

 I will next try to look into what the value we're coercing actually
 represents and why it's not what we expect. If anyone has any tips for
 figuring that out quickly, I'm all ears :)

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


More information about the ghc-tickets mailing list