[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