This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

ServerSocket::accept


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!)


eric


		
__________________________________
Do you Yahoo!?
Yahoo! Mail - 50x more storage than other providers!
http://promotions.yahoo.com/new_mail


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]