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

SecureRandom internal seed generation fatal crash onith AMD processor

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P3 P3
    • None
    • 1.4.0_01
    • hotspot
    • None
    • sparc
    • solaris_8


      We are observing a hotspot VM crash with EXCEPTION_ILLEGAL_INSTRUCTION. The dump generated by the VM is at the bottom of this Description section.

      This crash occurs as a result of attempting to obtain random bits from a SecureRandom instance which has not been explicitly seeded.

      In other words, the following sequence triggers the crash:

              SecureRandom rng = new SecureRandom();
              long seed = rng.nextLong();

      If the code is modified to set a seed first, the crash is not observed. So the following sequence of events does NOT crash:

              SecureRandom rng = new SecureRandom();
              rng.setSeed(1L);
              long seed = rng.nextLong();

      (While our code used nextLong(), any retrieval of random bits will cause the crash as well, e.g. nextInt()).

      While we have no information whether this is truly correlated, it is worth noting that this has only ever been observed on an AMD processor PC.

      Furthermore, if the VM is run with -Xdebug option, the crash will not occur. So it seems there is an interaction between the hotspot compilation(??) and the secure random internal seeding, perhaps only on AMD processors(?) which triggers the fault.

      Unfortunately I have not been able to come up with any small test case to demonstrate this behavior. If I take the above lines of code and wrap them in a main(), it will work just fine.

      The above sequence of operations occurs during the server startup of the SunONE Application Server 7 and there is where this crash is observed. It may be that triggering the bug requires a large number of classes being loaded. The SecureRandom use in the AS7 occurs early in the startup process of the server.

      The AS7 beta is available and could be used as a testcase to demonstrate this bug.

      Unexpected Signal : EXCEPTION_ILLEGAL_INSTRUCTION occurred at PC=0x2D3A542
      Function=run (compiled Java code)
      Library=(N/A)

      Current Java thread:

      Dynamic libraries:
      0x00400000 - 0x00406000 C:\Sun\AppServer7\appserv\bin\appservd.exe
      0x77F80000 - 0x77FFB000 C:\WINNT\System32\ntdll.dll
      0x10000000 - 0x100EB000 C:\Sun\AppServer7\appserv\bin\ns-httpd40.dll
      0x00230000 - 0x0024A000 C:\Sun\AppServer7\appserv\bin\ssl3.dll
      0x00250000 - 0x002C7000 C:\Sun\AppServer7\appserv\bin\nss3.dll
      0x30000000 - 0x30007000 C:\Sun\AppServer7\appserv\bin\libplc4.dll
      0x002D0000 - 0x002FE000 C:\Sun\AppServer7\appserv\bin\libnspr4.dll
      0x77DB0000 - 0x77E0C000 C:\WINNT\system32\ADVAPI32.dll
      0x77E80000 - 0x77F35000 C:\WINNT\system32\KERNEL32.DLL
      0x77D40000 - 0x77DB0000 C:\WINNT\system32\RPCRT4.DLL
      0x75050000 - 0x75058000 C:\WINNT\system32\WSOCK32.dll
      0x75030000 - 0x75043000 C:\WINNT\system32\WS2_32.DLL
      0x78000000 - 0x78046000 C:\WINNT\system32\MSVCRT.DLL
      0x75020000 - 0x75028000 C:\WINNT\system32\WS2HELP.DLL
      0x74FF0000 - 0x75002000 C:\WINNT\system32\MSWSOCK.dll
      0x77E10000 - 0x77E74000 C:\WINNT\system32\USER32.DLL
      0x77F40000 - 0x77F7C000 C:\WINNT\system32\GDI32.DLL
      0x77980000 - 0x779A4000 C:\WINNT\system32\DNSAPI.DLL
      0x00300000 - 0x00306000 C:\Sun\AppServer7\appserv\bin\libplds4.dll
      0x00310000 - 0x00318000 C:\Sun\AppServer7\appserv\bin\nsfc.dll
      0x00320000 - 0x00326000 C:\Sun\AppServer7\appserv\bin\nstime.dll
      0x00330000 - 0x0033A000 C:\Sun\AppServer7\appserv\bin\nsprwrap.dll
      0x00340000 - 0x0034C000 C:\Sun\AppServer7\appserv\bin\support.dll
      0x00350000 - 0x00355000 C:\Sun\AppServer7\appserv\bin\nstp.dll
      0x00360000 - 0x00365000 C:\Sun\AppServer7\appserv\bin\getprop.dll
      0x00370000 - 0x00385000 C:\Sun\AppServer7\appserv\bin\libsi18n.dll
      0x00390000 - 0x0039A000 C:\Sun\AppServer7\appserv\bin\libdbm.dll
      0x003A0000 - 0x003A5000 C:\Sun\AppServer7\appserv\bin\ares3.dll
      0x782F0000 - 0x7852F000 C:\WINNT\system32\SHELL32.dll
      0x70BD0000 - 0x70C1C000 C:\WINNT\system32\SHLWAPI.dll
      0x716F0000 - 0x7177A000 C:\WINNT\system32\COMCTL32.dll
      0x003B0000 - 0x003B8000 C:\Sun\AppServer7\appserv\bin\NSSLDAP32V50.dll
      0x003C0000 - 0x003C6000 C:\Sun\AppServer7\appserv\bin\NSLDAPPR32V50.dll
      0x003D0000 - 0x003F5000 C:\Sun\AppServer7\appserv\bin\NSLDAP32V50.dll
      0x00410000 - 0x004A1000 C:\Sun\AppServer7\appserv\bin\xerces-c.dll
      0x004B0000 - 0x004C1000 C:\Sun\AppServer7\appserv\bin\nsres3231.dll
      0x004D0000 - 0x004EC000 C:\Sun\AppServer7\appserv\bin\nsuni3231.dll
      0x004F0000 - 0x00500000 C:\Sun\AppServer7\appserv\bin\nscnv3231.dll
      0x780A0000 - 0x780B2000 C:\Sun\AppServer7\appserv\bin\MSVCIRT.dll
      0x00500000 - 0x00521000 C:\Sun\AppServer7\appserv\bin\nsfmt3231.dll
      0x75E60000 - 0x75E7A000 C:\WINNT\System32\IMM32.DLL
      0x785C0000 - 0x785CC000 C:\WINNT\System32\rnr20.dll
      0x77340000 - 0x77353000 C:\WINNT\system32\iphlpapi.dll
      0x77520000 - 0x77525000 C:\WINNT\system32\ICMP.DLL
      0x77320000 - 0x77337000 C:\WINNT\system32\MPRAPI.DLL
      0x75150000 - 0x75160000 C:\WINNT\system32\SAMLIB.DLL
      0x75170000 - 0x751BF000 C:\WINNT\system32\NETAPI32.DLL
      0x77BE0000 - 0x77BEF000 C:\WINNT\system32\SECUR32.DLL
      0x751C0000 - 0x751C6000 C:\WINNT\system32\NETRAP.DLL
      0x77950000 - 0x7797A000 C:\WINNT\system32\WLDAP32.DLL
      0x77A50000 - 0x77B46000 C:\WINNT\system32\OLE32.DLL
      0x779B0000 - 0x77A4B000 C:\WINNT\system32\OLEAUT32.DLL
      0x773B0000 - 0x773DE000 C:\WINNT\system32\ACTIVEDS.DLL
      0x77380000 - 0x773A2000 C:\WINNT\system32\ADSLDPC.DLL
      0x77830000 - 0x7783E000 C:\WINNT\system32\RTUTILS.DLL
      0x77880000 - 0x7790D000 C:\WINNT\system32\SETUPAPI.DLL
      0x77C10000 - 0x77C6E000 C:\WINNT\system32\USERENV.DLL
      0x774E0000 - 0x77512000 C:\WINNT\system32\RASAPI32.DLL
      0x774C0000 - 0x774D1000 C:\WINNT\system32\rasman.dll
      0x77530000 - 0x77552000 C:\WINNT\system32\TAPI32.dll
      0x77360000 - 0x77379000 C:\WINNT\system32\DHCPCSVC.DLL
      0x775A0000 - 0x77625000 C:\WINNT\system32\CLBCATQ.DLL
      0x777E0000 - 0x777E8000 C:\WINNT\System32\winrnr.dll
      0x777F0000 - 0x777F5000 C:\WINNT\system32\rasadhlp.dll
      0x01AC0000 - 0x01ACF000 C:\Sun\AppServer7\appserv\bin\j2eeplugin.dll
      0x6D450000 - 0x6D6AD000 C:\Sun\AppServer7\jdk\jre\bin\server\jvm.dll
      0x77570000 - 0x775A0000 C:\WINNT\System32\WINMM.dll
      0x681A0000 - 0x681A7000 C:\WINNT\System32\serwvdrv.dll
      0x66740000 - 0x66747000 C:\WINNT\System32\umdmxfrm.dll
      0x74FD0000 - 0x74FEF000 C:\WINNT\system32\msafd.dll
      0x75010000 - 0x75017000 C:\WINNT\System32\wshtcpip.dll
      0x6D1D0000 - 0x6D1D7000 C:\Sun\AppServer7\jdk\jre\bin\hpi.dll
      0x6D300000 - 0x6D30D000 C:\Sun\AppServer7\jdk\jre\bin\verify.dll
      0x6D210000 - 0x6D228000 C:\Sun\AppServer7\jdk\jre\bin\java.dll
      0x6D320000 - 0x6D32D000 C:\Sun\AppServer7\jdk\jre\bin\zip.dll
      0x6D2D0000 - 0x6D2DD000 C:\Sun\AppServer7\jdk\jre\bin\net.dll
      0x77920000 - 0x77943000 C:\WINNT\system32\imagehlp.dll
      0x72A00000 - 0x72A2D000 C:\WINNT\system32\DBGHELP.dll
      0x731B0000 - 0x731BA000 C:\Sun\AppServer7\appserv\bin\PSAPI.DLL

      Local Time = Wed Jun 26 20:49:48 2002
      Elapsed Time = 23
      #
      # HotSpot Virtual Machine Error : EXCEPTION_ILLEGAL_INSTRUCTION
      # Error ID : 4F530E43505002D5
      # Please report this error at
      # http://java.sun.com/cgi-bin/bugreport.cgi
      #
      # Java VM: Java HotSpot(TM) Server VM (1.4.0_01-b03 mixed mode)
      #

      ###@###.### 2002-06-27
      --

            sdeversunw Steve Dever (Inactive)
            duke J. Duke
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: