[GHC] #8935: Obscure linker bug leads to crash in GHCi

GHC ghc-devs at haskell.org
Tue Apr 29 17:40:38 UTC 2014


#8935: Obscure linker bug leads to crash in GHCi
-------------------------------------+------------------------------------
        Reporter:  simonmar          |            Owner:  simonmar
            Type:  bug               |           Status:  new
        Priority:  high              |        Milestone:  7.8.3
       Component:  Runtime System    |          Version:  7.8.1-rc2
      Resolution:                    |         Keywords:
Operating System:  Unknown/Multiple  |     Architecture:  Unknown/Multiple
 Type of failure:  GHCi crash        |       Difficulty:  Rocket Science
       Test Case:                    |       Blocked By:
        Blocking:                    |  Related Tickets:
-------------------------------------+------------------------------------

Comment (by simonmar):

 Replying to [comment:2 trommler]:
 > I tried the test program on openSUSE 12.3:
 > {{{
 > environ = 0x601060
 > dlsym(deflt, "environ") = 0x601060
 > dlsym("libgmp", "environ") = 0x601060
 > dlsym("libpthread", "environ") = 0x601060
 > }}}
 > Here is my libgmp:
 > {{{
 > ls /usr/lib64/libgmp.so*
 > /usr/lib64/libgmp.so  /usr/lib64/libgmp.so.10
 /usr/lib64/libgmp.so.10.0.5
 > }}}
 >
 > IIRC POSIX.1 (but not C!) reserves variable {{{environ}}}. So I'd say it
 is a bug in Ubuntu's libgmp.

 The original distro I encountered the problem on was CentOS.  I don't
 think it is to do with gmp specifically, IIRC there were other libraries
 that cause the behaviour too (but I'd need to go back and check again).

 My partial theory is that because `environ` is a symbol with R_COPY
 relocation, the linker is confused and has returned the original location
 (before the contents were copied and the symbol relocated).

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


More information about the ghc-tickets mailing list