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

Endless loop in SSLSocketImpl.waitForClose for MSSQL JDBC driver 11ea+24 onwards

XMLWordPrintable

    • b24
    • 11
    • x86_64
    • linux

      ADDITIONAL SYSTEM INFORMATION :
      OS: Linux 64-bit, Java 11-ea+24, MSSQL JDBC 6.4.0

      A DESCRIPTION OF THE PROBLEM :
      With build 11-ea+24 a jdbc connection to a ms sqlserver can't be established anymore. The connection is stuck at SSLSocketInputRecord.decode(ByteBuffer[], int, int) line: 169.

      The issue doesn't occur when using build 11-ea+17.

      REGRESSION : Last worked in version 11

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Try to establish a connection to a mssql server.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Connection is established.
      ACTUAL -
      Connection locks up. The stacktrace of the lock is:
      Thread [main] (Suspended)
      owns: SSLSocketImpl (id=17)
      owns: Object (id=18)
      SSLSocketInputRecord.decode(ByteBuffer[], int, int) line: 169
      SSLTransport.decode(TransportContext, ByteBuffer[], int, int, ByteBuffer[], int, int) line: 108
      SSLSocketImpl.decode(ByteBuffer) line: 877
      SSLSocketImpl.waitForClose() line: 952
      SSLSocketImpl.closeSocket(boolean) line: 929
      SSLSocketImpl.shutdown() line: 1170
      TransportContext.initiateOutboundClose() line: 567
      TransportContext.closeOutbound() line: 482
      TransportContext.close() line: 450
      SSLSocketImpl.close() line: 447
      TDSChannel.disableSSL() line: 711
      TDSWriter.writePacket(int) line: 4093
      TDSWriter.endMessage() line: 3196
      SQLServerConnection$LogonCommand(TDSCommand).startResponse(boolean) line: 7712
      SQLServerConnection$LogonCommand(TDSCommand).startResponse() line: 7700
      SQLServerConnection.sendLogon(SQLServerConnection$LogonCommand, SSPIAuthentication, SQLServerConnection$FederatedAuthenticationFeatureExtensionData) line: 4547
      SQLServerConnection.logon(SQLServerConnection$LogonCommand) line: 3409
      SQLServerConnection.access$100(SQLServerConnection, SQLServerConnection$LogonCommand) line: 85
      SQLServerConnection$LogonCommand.doExecute() line: 3373
      SQLServerConnection$LogonCommand(TDSCommand).execute(TDSWriter, TDSReader) line: 7344
      SQLServerConnection.executeCommand(TDSCommand) line: 2713
      SQLServerConnection.connectHelper(ServerPortPlaceHolder, int, int, boolean, boolean, boolean, int) line: 2261
      SQLServerConnection.login(String, String, int, String, FailoverInfo, int, long) line: 1921
      SQLServerConnection.connectInternal(Properties, SQLServerPooledConnection) line: 1762
      SQLServerConnection.connect(Properties, SQLServerPooledConnection) line: 1077
      SQLServerDriver.connect(String, Properties) line: 623
      DriverManager.getConnection(String, Properties, Class<?>) line: 677
      DriverManager.getConnection(String) line: 251
      ConnectTest.main(String[]) line: 16


      ---------- BEGIN SOURCE ----------
      // Add mssql-jdbc-6.4.0.jre8.jar to classpath
      public class ConnectTest
      {
          public static void main( String[] args ) throws ClassNotFoundException
          {
              String connectionUrl = "jdbc:sqlserver://CONNECTION_DETAILS";

              Class.forName( "com.microsoft.sqlserver.jdbc.SQLServerDriver" );
              try (Connection con = DriverManager.getConnection( connectionUrl ))
              {
                  String SQL = "SELECT 1";
                  Statement stmt = con.createStatement();
                  ResultSet rs = stmt.executeQuery( SQL );
                  System.out.println( rs );
              }
              catch( Exception e )
              {
                  e.printStackTrace();
              }
          }
      }
      ---------- END SOURCE ----------

      FREQUENCY : always


            Unassigned Unassigned
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: