[GHC] #10458: GHCi fails to load shared object (the 'impossible' happened)

GHC ghc-devs at haskell.org
Wed Jul 15 06:41:41 UTC 2015


#10458: GHCi fails to load shared object (the 'impossible' happened)
---------------------------------+-----------------------------------------
        Reporter:  rleslie       |                   Owner:
            Type:  bug           |                  Status:  new
        Priority:  high          |               Milestone:  7.10.2
       Component:  GHCi          |                 Version:  7.10.1
      Resolution:                |                Keywords:
Operating System:  Linux         |            Architecture:  x86_64 (amd64)
 Type of failure:  None/Unknown  |               Test Case:
      Blocked By:                |                Blocking:
 Related Tickets:                |  Differential Revisions:
---------------------------------+-----------------------------------------

Comment (by trommler):

 Replying to [comment:6 rwbarton]:
 > We should probably just go ahead with that fix anyways since this
 breakage is rather severe. Let's keep this ticket open after doing so
 though, to see whether it causes any issues like #8935 and perhaps take a
 moment to see if we can find a simpler way to handle this whole situation.
 The issue in #8935 was that we did not search the global context (the
 executable) first when resolving a symbol. The issue were certain
 relocations used for global variables (the process environment in the case
 of #8935).

 To solve the issue here we have two options:
 1. Load C libraries with RTLD_GLOBAL, the symbols cannot be overridden by
 Haskell code. Is there a reasonable use case where we would override the
 definition of a symbol in a C library during one run of GHCi?
 1. Append all `-lfoo` to every link command of a temporary shared library.
 If a symbol is defined in a library mentioned earlier in the link command
 it will override the symbol in `libfoo`.

 The second option is probably easier to implement whereas the performance
 of the first option will most likely be better (fewer libraries to open
 and fewer symbols to look at).

 I would say we go for option two for now and create a new ticket for a
 complete redesign of dynamic linking for 7.12.

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


More information about the ghc-tickets mailing list