#2892: (threadDelay (-1)) hangs
-------------------------+--------------------------------------------------
    Reporter:  dancor    |        Owner:         
        Type:  bug       |       Status:  new    
    Priority:  normal    |    Milestone:         
   Component:  Compiler  |      Version:  6.10.1 
    Severity:  normal    |   Resolution:         
    Keywords:            |   Difficulty:  Unknown
    Testcase:            |           Os:  Linux  
Architecture:  x86       |  
-------------------------+--------------------------------------------------
Changes (by igloo):

  * difficulty:  => Unknown

Old description:

> threadDelay silently hangs forever given a negative delay interval.  It
> seems like this should at least be documented, but further is probably
> suboptimal magical behavior that leads to harder-to-find bugs; instead
> this should be an error.  Conceivably threadDelay could take Maybe Int
> but that seems kind of out there.
>
> Here is some discussion from #haskell:
> 06:39 < dancor> do other ppl agree that (threadDelay (-1)) hanging
> silently is
>                 bug?
> 06:39 < dancor> i guess you might want infinite hang, hm
> 06:39 < Cale> dancor: I think I might agree with that, though now that
> you
>               mention it, it's very handy.
> 06:39 < Cale> dancor: A lot of things which would cause a thread to block
>               forever will throw an exception and kill the thread.
> 06:40 < Cale> (an exception which you'd often wish were silent)
> 06:40 < Cale> But threadDelay is the wrong place for that
> 06:40 < b_jonas> dancor: yeah, the thread should just be garbage-
> collected
> 06:42  * quicksilver uses "forever (threadDelay maxBound)"
>
> I'm on Debian lenny:
> ~ uname -a
> Linux pima 2.6.26-1-686-bigmem #1 SMP Sat Nov 8 19:46:36 UTC 2008 i686
> GNU/Linux
> ~ ghc --version
> The Glorious Glasgow Haskell Compilation System, version 6.10.1
> ~ cat threadHang.hs
> import Control.Concurrent
> main = threadDelay (-1)

New description:

 threadDelay silently hangs forever given a negative delay interval.  It
 seems like this should at least be documented, but further is probably
 suboptimal magical behavior that leads to harder-to-find bugs; instead
 this should be an error.  Conceivably threadDelay could take Maybe Int but
 that seems kind of out there.

 Here is some discussion from #haskell:
 {{{
 06:39 < dancor> do other ppl agree that (threadDelay (-1)) hanging
 silently is
                 bug?
 06:39 < dancor> i guess you might want infinite hang, hm
 06:39 < Cale> dancor: I think I might agree with that, though now that you
               mention it, it's very handy.
 06:39 < Cale> dancor: A lot of things which would cause a thread to block
               forever will throw an exception and kill the thread.
 06:40 < Cale> (an exception which you'd often wish were silent)
 06:40 < Cale> But threadDelay is the wrong place for that
 06:40 < b_jonas> dancor: yeah, the thread should just be garbage-collected
 06:42  * quicksilver uses "forever (threadDelay maxBound)"
 }}}

 I'm on Debian lenny:
 {{{
 ~ uname -a
 Linux pima 2.6.26-1-686-bigmem #1 SMP Sat Nov 8 19:46:36 UTC 2008 i686
 GNU/Linux
 ~ ghc --version
 The Glorious Glasgow Haskell Compilation System, version 6.10.1
 ~ cat threadHang.hs
 import Control.Concurrent
 main = threadDelay (-1)
 }}}

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/2892#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to