ServerSocket::accept
Michael Koch
konqueror@gmx.de
Tue Jul 6 19:01:00 GMT 2004
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Am Dienstag, 6. Juli 2004 18:08 schrieb Eric Wong:
> Hi,
>> In version 3.4.0/1, ServerSocket.accept() creates a
> new Socket() and then in the process invoke
> Socket.getImpl(), which goes something like this:
>> -----
> SocketImpl getImpl() throws SocketException
> try
> {
> if (!implCreated)
> {
> impl.create(true);
> implCreated = true;
> }
> }
> catch (IOException e)
> {
> throw new SocketException(e.getMessage());
> }
>> return impl;
> -----
>> But create(true) alone will cause
> natPlainSocketImplPosix.cc (depending on the platform)
> to create a fresh yet never-been-used socket
>> descriptor. As a result, lsof will show:
> > socktest 31812 root 8u sock 0,0 1364355 can't
>> identify protocol
>> So each ServerSocket.accept() call will generate
> additional descriptor until we get EMFILE error ("Too
> many open files").
>> (At first, i thought the run-out-of-file-descriptors
> issue has got something to do with proper socket
> closures!)
I fixed this bug for 3.5. I will provide a a patch for 3.4 soon.
Michael
- --
Homepage: http://www.worldforge.org/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
iD8DBQFA6veNWSOgCCdjSDsRAskSAKCPs8kdWCS6fYmxtQT+J0vOAm4vOACgmFdV
hgLZM2icM/x9GZdATf7bHvY=
=Agq9
-----END PGP SIGNATURE-----
More information about the Java
mailing list