Skip to content
  • Ömer Sinan Ağacan's avatar
    Fix BLACKHOLE inspection in RtClosureInspect · 45ed4619
    Ömer Sinan Ağacan authored
    When inspecing a BLACKHOLE if the BLACKHOLE points to a TSO or a
    BLOCKING_QUEUE we should return a suspension to the BLACKHOLE itself
    (instead of returning a suspension to the indirectee). The reason is
    because in the debugger when we want to evaluate this term we need to
    enter the BLACKHOLE and not to the TSO or BLOCKING_QUEUE. See the
    runtime panic caused by this in #8316.
    
    Note that while with this patch we do the right thing to evaluate
    thunks in GHCi, evaluating thunks that are owned by the evaluator thread
    in a breakpoint will cause a deadlock as we don't release the breakMVar,
    which is what blocks the evaluator thread from continuing with
    evaluation. So the GHCi thread will enter the BLACKHOLE, but owner of
    the BLACKHOLE is also blocked.
    
    Reviewers: simonmar, hvr, bgamari
    
    Reviewed By: bgamari
    
    Subscribers: rwbarton, carter
    
    GHC Trac Issues: #8316
    
    Differential Revision: https://phabricator.haskell.org/D5179
    45ed4619