Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8143992

SocketInputStream.socketRead0 hangs even with soTimeout under high load

XMLWordPrintable

    • x86
    • linux_redhat_6.0

      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.

            psonal Pallavi Sonal (Inactive)
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: