[GHC] #12527: GHC segfault while linking llvm-general while compiling a file using Template Haskell

GHC ghc-devs at haskell.org
Tue Aug 23 17:29:08 UTC 2016


#12527: GHC segfault while linking llvm-general while compiling a file using
Template Haskell
-------------------------------------+-------------------------------------
        Reporter:  HMPerson1         |                Owner:
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  7.10.3
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  crash                              |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by rwbarton):

 I could reproduce this just by running `ghci -package llvm-general`.

 What's going on here is that the ghci linker is loading an archive that
 contains two object files, let's call them `A.o` and `B.o`. For whatever
 reason ghci processes `A.o` before `B.o`. Now `A.o` has an `.init_array`
 section that contains a function that eventually calls a function defined
 in `B.o`. The problem is that `resolveObjs_` works like this:

     for each object file, resolve its relocations and then run its
 initializers

 so `B.o` hasn't had its relocations resolved when the initializer of `A.o`
 runs and tries to call a function defined in `B.o`. Seems like it should
 instead work like this:

     for each object file, resolve its relocations

     for each object file, run its initializers

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


More information about the ghc-tickets mailing list