A bug of multicore IO manager

Johan Tibell johan.tibell at gmail.com
Tue Sep 3 23:57:07 CEST 2013


Hi Kazu,

On Tue, Sep 3, 2013 at 2:52 PM, Kazu Yamamoto <kazu at iij.ad.jp> wrote:

> Hi,
>
> As I said before, I started running HTTP server using Mio in the real
> world. Unfortunately, the daemon is not stable.
>
> After one day or so, the server cannot accept any HTTP requests.  No
> error messages from the server.
>
> The server is alive. To terminate the server (running in a "screen"
> terminal), single Ctrl-c is not enough. Typing Ctrl-c again terminates
> the server.
>

Could you run an strace on the process in this state so we can get an idea
what it's doing?


> After several tests, I'm getting convinced that this occurs only when
> +RTS -N<x> is specified (where <x> >= 2). The server runs well if +RTS
> -N<x> is not specified.
>

That indicates that the problem is with the threaded RTS and perhaps with
the IO manager.


> My question: if the program complied with GHC needs double Ctrl-c to
> terminate, what is the situation of the program?
>

If Ctrl+C generates an exception (does it?) there could be an overzealous
exception catcher somewhere that catches all exceptions, including your
Ctrl+C.


>
> P.S.
>
> It seems to me that the server also is leaking space. The server is
> getting fatter gradually.


Could you use the profiler to see what type of objects are leaking?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20130903/6e469be1/attachment.htm>


More information about the ghc-devs mailing list