Bug in java.net.Socket close() behavior?

Joseph Gleason fireduck at gmail.com
Mon Oct 16 10:24:12 PDT 2006


According to the API for java.net.Socket close():

"Any thread currently blocked in an I/O operation upon this socket
will throw a SocketException."

http://java.sun.com/j2se/1.5.0/docs/api/java/net/Socket.html#close()

I have observed that java 1.5 on FreeBSD does not follow this while
the Windows and Linux ones I have tested do.  On the FreeBSD runtimes
that I have tested, a thread blocked on reading a socket just hangs
forever if the socket is closed.

Attached is a simple program that tests this behavior.  It just
connects to a port on one of my servers and has a reader thread
watching input from the socket and closes the socket in a different
thread to see if the reader thread gets an exception.

Java runtimes that I have tested this on:
# java -version
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build diablo-1.5.0-b01)
Java HotSpot(TM) 64-Bit Server VM (build diablo-1.5.0_07-b01, mixed mode)

# java -version
java version "1.5.0-p2"
Java(TM) 2 Runtime Environment, Standard Edition (build
1.5.0-p2-root_07_mar_2006_02_41)
Java HotSpot(TM) 64-Bit Server VM (build
1.5.0-p2-root_07_mar_2006_02_41, mixed mode)


More information about the freebsd-java mailing list