#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 simonmar): What you've done here is omit the yield checks on (some) case alternatives. Which is almost ok, because all loops will go through a function entry, except for let-no-escapes which use `altHeapCheck`. So with this patch you won't catch non-allocating recursive let-no-escapes. To make this correct you need to ensure that let-no-escapes get a yield point too, but you could also omit the yield points from ordinary `altHeapCheck`s which should reduce the code size hit further. The confusion probably arose because of my naming scheme: `altHeapCheckReturnsTo` is the heap check for a case alternative where the case scrutinee made an external call, and hence had a "returns to" continuation that we can re-use for the heap check's continuation. -- Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/367#comment:26> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler _______________________________________________ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs