JDK-8143992 : SocketInputStream.socketRead0 hangs even with soTimeout under high load
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.net
  • Affected Version: 7u76
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: linux_redhat_6.0
  • CPU: x86
  • Submitted: 2015-11-20
  • Updated: 2015-11-25
  • Resolved: 2015-11-25
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
java version "1.7.0_15"
Java(TM) SE Runtime Environment (build 1.7.0_15-b03)
Java HotSpot(TM) Server VM (build 23.7-b01, mixed mode)


ADDITIONAL OS VERSION INFORMATION :
Linux bac-lnx-vm096 2.6.32-131.0.15.el6.x86_64 #1 SMP Tue May 10 15:42:40 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux

A DESCRIPTION OF THE PROBLEM :
Under high load, the application hangs at "SocketInputStream.socketRead0", even though SOtimeOut is set to definite value [ 2000 ms]

The stack trace from thread dumps  is as below.

 "7548CWMP-60" daemon prio=10 tid=0x028d8800 nid=0xd29 runnable [0x25fdd000]
   java.lang.Thread.State: RUNNABLE
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.read(SocketInputStream.java:150)
	at java.net.SocketInputStream.read(SocketInputStream.java:121)
	at sun.security.ssl.InputRecord.readFully(InputRecord.java:442)
	at sun.security.ssl.InputRecord.read(InputRecord.java:480)
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
	- locked <0xb86d9ab0> (a java.lang.Object)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
	- locked <0xb86d9bb0> (a java.lang.Object)
	at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:882)
	at sun.security.ssl.AppInputStream.read(AppInputStream.java:102)
	- locked <0xb86d9bb8> (a sun.security.ssl.AppInputStream)
	at org.mortbay.util.LineInput.fill(LineInput.java:469)
	at org.mortbay.util.LineInput.fillLine(LineInput.java:547)
	at org.mortbay.util.LineInput.readLineBuffer(LineInput.java:293)
	at org.mortbay.util.LineInput.readLineBuffer(LineInput.java:277)
	at org.mortbay.http.HttpRequest.readHeader(HttpRequest.java:238)
	at org.mortbay.http.HttpConnection.readRequest(HttpConnection.java:918)
	at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:964)
	at org.mortbay.http.HttpConnection.handle(HttpConnection.java:888)
	at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)
	at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:384)
	at org.mortbay.util.ThreadPool$PoolThread.runWorker(ThreadPool.java:564)
	at com.cisco.csrc.util.ServerThread.traceRun(ServerThread.java:538)
	at com.cisco.csrc.util.ServerThread.run(ServerThread.java:377)



STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Rare occurrence.
Hard to reproduce. It happened only once in our environment where the application hanged and there is no consistent procedures identified to reproduce.

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
SSL Socket should get releases after SOTimeOut.

ACTUAL -
SSl Sockets are not released after SOTimeOut. and it caused application hung.

REPRODUCIBILITY :
This bug can be reproduced rarely.

---------- BEGIN SOURCE ----------
Not available
---------- END SOURCE ----------

CUSTOMER SUBMITTED WORKAROUND :
Force restart of the application to  release the sockets.


Comments
Closing as duplicate of JDK-8075484.
25-11-2015