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

GHC cvs-ghc at haskell.org
Fri Sep 21 05:47:02 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):

 Replying to [comment:22 simonmar]:
 > Replying to [comment:20 ezyang]:
 > > Fascinatingly enough, this doesn't help all that much, since
 instruction alignments adds in nops to fill in the space savings.
 >
 > But we don't actually align the heap-check failure branch, so I'm
 confused.  Can you post the asm code you're seeing?

 I misspoke; actually, we're page-aligning the data section, and the
 savings aren't enough to get us to the previous page. It's technically a
 benefit, but only if the increase in size means you can't fit the entire
 code block in the instruction cache...

 {{{
 - 12 .text         001e239c  0804a770  0804a770  00002770  2**4
 + 12 .text         001e23bc  0804a770  0804a770  00002770  2**4
                    CONTENTS, ALLOC, LOAD, READONLY, CODE
 }}}

 > I had in mind making it a transitive property - a function would get the
 alloc flag if it is guaranteed to allocate within a bounded time, so then
 any callers don't need a yield check.

 Hm, I guess this is good for the little blocks we generate which only have
 one exit point, and not so good if there are multiple exit points (since
 all of them would need the Alloc flag set to work.)

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



More information about the Glasgow-haskell-bugs mailing list