Skip to content
  • Moritz Angermann's avatar
    Stop the linker panic · 4fc6524a
    Moritz Angermann authored and Ben Gamari's avatar Ben Gamari committed
    If we fail to initialize the liker properly, we still set the
    `initLinkerDone`. In fact we even set that prior to actually
    initializing the linker. However if the linker initialization fails, we
    the `Done` state is still true. As such we run into the `Dynamic Linker
    not initialised` error. Which while technically corret is confusing as
    it pulls the attation away from the real issue.
    
    This change puts the Done state into an MVar, and as such ensureing
    that all parallel access needs to wait for the linker to be actually
    initialized, or try to re-initilize if it fails.
    
    Reviewers: bgamari, RyanGlScott, simonmar, hvr
    
    Reviewed By: bgamari
    
    Subscribers: rwbarton, thomie, carter
    
    GHC Trac Issues: #9868, #10355, #13137, #13607, #13531
    
    Differential Revision: https://phabricator.haskell.org/D5012
    4fc6524a