--Signatureri__17_Jun_2005_01_01_04_+0200_PcQEUANeMeENL8MG
Content-Type: text/plain; charset=US-ASCII
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, 17 Jun 2005 05:03:18 +0900
Eric Hodel <drbrain / segment7.net> wrote:

> It is probably not a bug in ruby, because ruby protects itself  
> against deadlock by immediately exitting.

good :)
Why the interpreter says "Segmentation fault" if it is only a deadlock ?

> All the threads were probably told to go to sleep

the debugging output tells us the problem is at
/usr/lib/ruby/1.8/webrick/server.rb:88
88    if svrs = IO.select(@listeners, nil, nil, 2.0)
              svrs[0].each{|svr|
                @tokens.pop          # blocks while no token is there.
                sock = svr.accept
                sock.sync = true
                Utils::set_close_on_exec(sock)
                th = start_thread(sock, &block)
                th[:WEBrickThread] = true
                thgroup.add(th)
             }
        end

/usr/lib/ruby/1.8/timeout.rb:41
      y = Thread.start {
41    sleep sec
        x.raise exception, "execution expired" if x.alive?
      }

I suppose the select timeout is implemented using timeout.rb but that doesn't explain the deadlock in this code.
any idea ?

thx
- Michel

--Signatureri__17_Jun_2005_01_01_04_+0200_PcQEUANeMeENL8MG
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQFCsgSzZvjSzHhNkDcRAiMoAJ4skHy51N+oM3ysiJ8MkO+2zo7wbgCfWNg7
W28YllzMz+zjwIUpkkI2KSApd
-----END PGP SIGNATURE-----

--Signatureri__17_Jun_2005_01_01_04_+0200_PcQEUANeMeENL8MG--