[GHC] #10414: Buggy behavior with threaded runtime (-N1 working, -N2 getting into <<loop>>)

GHC ghc-devs at haskell.org
Fri Jul 3 15:27:35 UTC 2015


#10414: Buggy behavior with threaded runtime (-N1 working, -N2 getting into
<<loop>>)
-------------------------------------+-------------------------------------
        Reporter:  exio4             |                   Owner:
            Type:  bug               |                  Status:  new
        Priority:  normal            |               Milestone:
       Component:  Compiler          |                 Version:  7.10.1
      Resolution:                    |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
 Type of failure:  Incorrect result  |  Unknown/Multiple
  at runtime                         |               Test Case:
      Blocked By:                    |                Blocking:
 Related Tickets:                    |  Differential Revisions:
-------------------------------------+-------------------------------------

Comment (by simonmar):

 Thanks for all the awesome debugging work here, I think we finally have
 all the pieces!

 @rwbarton's analysis seems plausible to me too.  A single-entry thunk can
 still be entered multiple times in a parallel setting, and if eager
 blackholing is on then it is possible that a thread can get blocked
 indefinitely.

 Threads blocked indefinitely are detected by the GC as deadlocked, and
 receive an exception, which results in the `<loop>` message.

 The fix should be simple: just don't do eager blackholing for single-entry
 thunks.

 Regarding this comment:

 {{{
     // NB. Blackholing is *compulsory*, we must either do lazy
     // blackholing, or eager blackholing consistently.  See Note
     // [upd-black-hole] in sm/Scav.c.
 }}}

 It means every update frame must refer to a black hole by the time the GC
 runs, it's an invariant the GC relies on.  It shouldn't be a problem here
 because it only applies to update frames.  I can reword the comment so
 it's clearer.

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


More information about the ghc-tickets mailing list