[GHC] #367: Infinite loops can hang Concurrent Haskell

GHC cvs-ghc at haskell.org
Wed Sep 26 03:08:28 CEST 2012


#367: Infinite loops can hang Concurrent Haskell
------------------------------------------+---------------------------------
  Reporter:  simonpj                      |          Owner:  ezyang              
      Type:  bug                          |         Status:  new                 
  Priority:  lowest                       |      Milestone:  _|_                 
 Component:  Compiler                     |        Version:  6.4.1               
Resolution:  None                         |       Keywords:  scheduler allocation
        Os:  Unknown/Multiple             |   Architecture:  Unknown/Multiple    
   Failure:  Incorrect result at runtime  |     Difficulty:  Unknown             
  Testcase:                               |      Blockedby:                      
  Blocking:                               |        Related:                      
------------------------------------------+---------------------------------

Comment(by ezyang):

 OK, once I get my validate running (failing, due to a certain someone,
 wink), I will push the patch, plus this docu patch:

 {{{
 <varlistentry>
   <term>
     <option>-falways-yield</option>
     <indexterm><primary><option>-falways-
 yield</option></primary></indexterm>
   </term>
   <listitem>
       <para>Tells GHC to always emit a pre-emption check on entry
     points to functions. This means that threads that run in tight
     non-allocating loops will get preempted in a timely fashion;
     otherwise, GHC may never manage to interrupt such a loop.  This
     imposes a very slight performance impact but inflates binary sizes
     by about 5%, so it is not enabled by default.  Note that if you
     would like to guarantee that threads can always be interrupted,
     you will need to compile all libraries with this flag.</para>
   </listitem>
 </varlistentry>
 }}}

 What are we going to do with information about CPU hogging primitives?
 There are lots of unsafe primitives which can cause GHC to segfault or
 jump to arbitrary code, so mostly this information would have to be
 advisory for Safe Haskell implementors, who would know if one of these
 primitives were called it better be doing bounds checks, etc. We can't
 forcibly terminate the primops, since they're fat machine instructions and
 don't give up the capability?

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



More information about the Glasgow-haskell-bugs mailing list