This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC 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]

[Bug libgcj/16473] New: [3.4] ServerSocket leaks file descriptors


As reported by Eric Wong:

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").

-- 
           Summary: [3.4] ServerSocket leaks file descriptors
           Product: gcc
           Version: 3.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: libgcj
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: mckinlay at redhat dot com
                CC: gcc-bugs at gcc dot gnu dot org,java-prs at gcc dot gnu
                    dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16473


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