[GHC] #2408: threadWaitRead on mingw32 threaded causes internal error

GHC ghc-devs at haskell.org
Tue Nov 26 11:21:11 UTC 2013


#2408: threadWaitRead on mingw32 threaded causes internal error
-----------------------------------+---------------------------
        Reporter:  kirby           |            Owner:
            Type:  bug             |           Status:  new
        Priority:  normal          |        Milestone:  6.10.1
       Component:  libraries/base  |          Version:  7.6.1
      Resolution:                  |         Keywords:
Operating System:  Windows         |     Architecture:  x86
 Type of failure:  Runtime crash   |       Difficulty:  Unknown
       Test Case:                  |       Blocked By:
        Blocking:                  |  Related Tickets:
-----------------------------------+---------------------------
Changes (by blackbox.dev):

 * status:  closed => new
 * cc: blackbox.dev.ml@… (added)
 * failure:   => Runtime crash
 * version:  6.8.3 => 7.6.1
 * owner:  simonmar =>
 * resolution:  fixed =>


Comment:

 This bug still occurs, see last comment on https://github.com/twittner
 /zeromq-haskell/issues/8

 {{{
 display.exe: internal error: waitRead# on threaded RTS
 (GHC version 7.6.3 for i386_unknown_mingw32)
 Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

 This application has requested the Runtime to terminate it in an unusual
 way.
 Please contact the application's support team for more information.
 }}}

 Replying to [ticket:2408 kirby]:
 > threadWaitRead (used in 6.8.x to avoid the non-interruptable getChar)
 causes internal error on GHC 6.8.2 and 6.8.3:
 >
 > {{{
 > prompt: test: internal error: waitRead# on threaded RTS
 >     (GHC version 6.8.2 for i386_unknown_mingw32)
 >     Please report this as a GHC bug:
 http://www.haskell.org/ghc/reportabug
 >
 > This application has requested the Runtime to terminate it in an unusual
 way.
 > Please contact the application's support team for more information.
 > }}}
 >
 > This is because in GHC.Conc:
 > {{{
 > threadWaitRead :: Fd -> IO ()
 > threadWaitRead fd
 > #ifndef mingw32_HOST_OS
 >   | threaded  = waitForReadEvent fd
 > #endif
 >   | otherwise = IO $ \s ->
 >       case fromIntegral fd of { I# fd# ->
 >       case waitRead# fd# s of { s -> (# s, () #)
 >       }}
 > }}}
 > So the threaded case is ignored on mingw32, and waitRead# crashes on
 threaded RTS.
 > It should be at least written on the threadWaitRead documentation, and a
 workaround provided.
 >
 > I've attached a little program to show the issue (if compiled with
 -threaded on windows).

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


More information about the ghc-tickets mailing list