Michael, Alan,
This is a follow up to CR 7073491 where the same issue was addressed in
DatagramSocket. This CR proposes to address the same problem exposed
through deprecated java.net.Socket(InetAddress host, int port, boolean
stream).
The problem is in AbstractPlainSocketImpl.create(). If
ResourceManager.beforeUdpCreate() throws an exception then fd is left
set. When the finalizer for this object runs it will invoke close() and
decrement the counter, thus double counting the close. It only happens
via the finalizer because the impl is not returned to the application,
because the original exception is thrown from a Socket constructor.
http://cr.openjdk.java.net/~chegar/7098719/webrev.00/webrev/
-Chris.