[GHC] #13531: GHC fails with "Dynamic linker not initialised" when -j is on and trying to load nonexistent .so file

GHC ghc-devs at haskell.org
Wed Apr 5 13:30:32 UTC 2017


#13531: GHC fails with "Dynamic linker not initialised" when -j is on and trying to
load nonexistent .so file
-------------------------------------+-------------------------------------
        Reporter:  nh2               |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.0.2
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  crash or panic                     |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #13137, #9868,    |  Differential Rev(s):
  #10355                             |
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by nh2):

 {{{
 (13:52:43) Phyx-: it seems like a race condition, something is calling a
 linker function which requires the persistent state without first calling
 initDynLinker
 (13:52:52) Phyx-: would make sense if it goes away with -j1
 (13:53:26) nh2: Phyx-: that sounds plausible to me; would a `ghc -v` dump
 help here (does it show when it initialises the linker)?
 (13:54:46) Phyx-: no, that part is mostly completely silent. you might get
 lucky with a debug build and +RTS -Dl
 (13:56:57) Phyx-: all the top level exposed functions in Linker.hs call
 initDynLinker though.
 (13:58:11) Phyx-: except for extendLoadedPkgs, extendLinkEnv and
 deleteFromLinkEnv
 (13:59:17) Phyx-: If you can reproduce it consistently, easiest would be
 just to add some print statements and see what calls what
 (14:00:55) Phyx-: nh2: or, better yet, try a profiling build and see if
 you get a stack trace from the panic
 (15:16:05) nh2: Phyx-: the race condition seems to happen only when the
 linking actually _fails_, e.g. when you would get "no such file or
 directory" when GHC  -j1 tries to load something
 (15:19:40) Phyx-: nh2: then my completely wild speculation is that the
 function that failed was supposed to initialise the linker but didn't
 because of the error.
 (15:20:17) Phyx-: I think one of the tickets RyanGlScott said it also
 happens for Windows. I'll see if I can repo
 }}}

 Note I can reproduce this 100% in nixpkgs but haven't extracted it into a
 publicly available reproduction yet.

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


More information about the ghc-tickets mailing list