This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libgcj/16473] New: [3.4] ServerSocket leaks file descriptors
- From: "mckinlay at redhat dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 11 Jul 2004 16:12:15 -0000
- Subject: [Bug libgcj/16473] New: [3.4] ServerSocket leaks file descriptors
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
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