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

JVM crashes with SIGFPE during startup

    Details

    • Subcomponent:
    • Resolved In Build:
      b04
    • CPU:
      generic
    • OS:
      generic
    • Verification:
      Verified

      Backports

        Description

        JVM crashes on vm-x2250-05.sfbay, both linux-i586 and linux-amd64 versions when launching just a "java -version":

        vm-x2250-05$ /net/sqenfs-1.sfbay/export1/comp/vm/jdk/hsx/19/pit/b04/jdk7b101/product/linux-amd64/bin/java -version
        #
        # A fatal error has been detected by the Java Runtime Environment:
        #
        # SIGFPE (0x8) at pc=0x00007f4a2e348aa0, pid=9317, tid=1092385104
        #
        # JRE version: 7.0-b99
        # Java VM: Java HotSpot(TM) 64-Bit Server VM (19.0-b04-201007090738.et151817.hs19b04 mixed mode linux-amd64 compressed oops)
        # Problematic frame:
        # V [libjvm.so+0x711aa0]
        #
        # An error report file with more information is saved as:
        # /home/ks158143/bugs/hs_err_pid9317.log
        #
        # If you would like to submit a bug report, please visit:
        # http://java.sun.com/webapps/bugreport/crash.jsp
        #
        Aborted

        gdb shows the following backtrace:

        Program received signal SIGFPE, Arithmetic exception.
        [Switching to Thread 0x4030b950 (LWP 9958)]
        0x00007f1351644aa6 in VM_Version::get_processor_features () from /net/sqenfs-1.sfbay/export1/jdk/vm/hsx/19/pit/b04/jdk7b101/fastdebug/linux-amd64/jre/lib/amd64/server/libjvm.so
        (gdb) bt
        #0 0x00007f1351644aa6 in VM_Version::get_processor_features ()
           from /net/sqenfs-1.sfbay/export1/jdk/vm/hsx/19/pit/b04/jdk7b101/fastdebug/linux-amd64/jre/lib/amd64/server/libjvm.so
        #1 0x00007f1351645f1d in VM_Version::initialize () from /net/sqenfs-1.sfbay/export1/jdk/vm/hsx/19/pit/b04/jdk7b101/fastdebug/linux-amd64/jre/lib/amd64/server/libjvm.so
        #2 0x00007f1351644439 in VM_Version_init () from /net/sqenfs-1.sfbay/export1/jdk/vm/hsx/19/pit/b04/jdk7b101/fastdebug/linux-amd64/jre/lib/amd64/server/libjvm.so
        #3 0x00007f135117a8dd in init_globals () from /net/sqenfs-1.sfbay/export1/jdk/vm/hsx/19/pit/b04/jdk7b101/fastdebug/linux-amd64/jre/lib/amd64/server/libjvm.so
        #4 0x00007f13515cc6ab in Threads::create_vm () from /net/sqenfs-1.sfbay/export1/jdk/vm/hsx/19/pit/b04/jdk7b101/fastdebug/linux-amd64/jre/lib/amd64/server/libjvm.so
        #5 0x00007f13511d69e1 in JNI_CreateJavaVM () from /net/sqenfs-1.sfbay/export1/jdk/vm/hsx/19/pit/b04/jdk7b101/fastdebug/linux-amd64/jre/lib/amd64/server/libjvm.so
        #6 0x00007f1352122b4f in JavaMain () from /net/sqenfs-1.sfbay/export1/jdk/vm/hsx/19/pit/b04/jdk7b101/fastdebug/linux-amd64/bin/../jre/lib/amd64/jli/libjli.so
        #7 0x00007f135233b3f7 in start_thread () from /lib/libpthread.so.0
        #8 0x00007f1351c8fbbd in clone () from /lib/libc.so.6
        #9 0x0000000000000000 in ?? ()

        hs_err file is attached.
        Christian Thalinger encountered a bug, which looks similar on OpenSolaris:

        "I get a SIGFPE with the RI on my MacBook Pro running OpenSolaris:

        (dbx) where
        current thread: t@1
          [1] _lwp_kill(0x1, 0x6, 0x8045cd8, 0xc84e989a), at 0xc84f1045
          [2] thr_kill(0x1, 0x6, 0x8045cd8, 0xc849904e), at 0xc84e98bc
          [3] raise(0x6, 0x0, 0x8045d28, 0xc847102a), at 0xc849905a
          [4] abort(0x6, 0xc999435c, 0xc924982c, 0x8040031, 0xc8e198e4, 0xc9a7e990), at 0xc847104a
        =>[5] os::abort(dump_core = true), line 1804 in "os_solaris.cpp"
          [6] VMError::report_and_die(this = 0x80460dc), line 894 in "vmError.cpp"
          [7] JVM_handle_solaris_signal(sig = 8, info = 0x8046464, ucVoid = 0x8046264, abort_if_unrecognized = 1), line 712 in "os_solaris_x86.cpp"
          [8] signalHandler(sig = 8, info = 0x8046464, ucVoid = 0x8046264), line 4102 in "os_solaris.cpp"
          [9] __sighndlr(0x8, 0x8046464, 0x8046264, 0xc924fde0), at 0xc84ec025
          ---- called from signal handler with signal 8 (SIGFPE) ------
          [10] VM_Version::cores_per_cpu(), line 383 in "vm_version_x86.hpp"
          [11] VM_Version::get_processor_features(), line 338 in "vm_version_x86.cpp"
          [12] VM_Version::initialize(), line 590 in "vm_version_x86.cpp"
          [13] VM_Version_init(), line 219 in "vm_version.cpp"
          [14] init_globals(), line 87 in "init.cpp"
          [15] Threads::create_vm(args = 0x8046b2c, canTryAgain = 0x8046aff), line 2951 in "thread.cpp"
          [16] JNI_CreateJavaVM(vm = 0x80473b0, penv = 0x80473ac, args = 0x8046b2c), line 3282 in "jni.cpp"
          [17] InitializeJVM(pvm = 0x80473b0, penv = 0x80473ac, ifn = 0x8047380), line 1082 in "java.c"
          [18] main(argc = 0, argv = 0x80473e8), line 330 in "java.c"
        (dbx) fr 10
        Current function is VM_Version::cores_per_cpu
          383 result = _cpuid_info.tpl_cpuidB1_ebx.bits.logical_cpus /
        (dbx) p _cpuid_info
        _cpuid_info = {
            std_max_function = 13U
            std_vendor_name_0 = 1970169159U
            std_vendor_name_1 = 1818588270U
            std_vendor_name_2 = 1231384169U
            std_cpuid1_eax = {
                value = 67194U
                bits = {
                    stepping = 10U
                    model = 7U
                    family = 6U
                    proc_type = 0
                    ext_model = 1U
                    ext_family = 0
                }
            }
            std_cpuid1_ebx = {
                value = 16910336U
                bits = {
                    brand_id = 0
                    clflush_size = 8U
                    threads_per_cpu = 2U
                    apic_id = 1U
                }
            }
            std_cpuid1_ecx = {
                value = 67691517U
                bits = {
                    sse3 = 1U
                    monitor = 1U
                    vmx = 1U
                    est = 1U
                    ssse3 = 1U
                    cid = 0
                    cmpxchg16 = 1U
                    dca = 0
                    sse4_1 = 1U
                    sse4_2 = 0
                    popcnt = 0
                }
            }
            std_cpuid1_edx = {
                value = 3219913727U
                bits = {
                    tsc = 1U
                    cmpxchg8 = 1U
                    cmov = 1U
                    mmx = 1U
                    fxsr = 1U
                    sse = 1U
                    sse2 = 1U
                    ht = 1U
                }
            }
            dcp_cpuid4_eax = {
                value = 67109153U
                bits = {
                    cache_type = 1U
                    cores_per_cpu = 1U
                }
            }
            dcp_cpuid4_ebx = {
                value = 29360191U
                bits = {
                    L1_line_size = 63U
                    partitions = 0
                    associativity = 7U
                }
            }
            dcp_cpuid4_ecx = 63U
            dcp_cpuid4_edx = 1U
            tpl_cpuidB0_eax = 0
            tpl_cpuidB0_ebx = {
                value = 0
                bits = {
                    logical_cpus = 0
                }
            }
            tpl_cpuidB0_ecx = 0
            tpl_cpuidB0_edx = 0
            tpl_cpuidB1_eax = 0
            tpl_cpuidB1_ebx = {
                value = 0
                bits = {
                    logical_cpus = 0
                }
            }
            tpl_cpuidB1_ecx = 0
            tpl_cpuidB1_edx = 0
            tpl_cpuidB2_eax = 0
            tpl_cpuidB2_ebx = {
                value = 0
                bits = {
                    logical_cpus = 0
                }
            }
            tpl_cpuidB2_ecx = 0
            tpl_cpuidB2_edx = 0
            ext_max_function = 0
            ext_vendor_name_0 = 0
            ext_vendor_name_1 = 0
            ext_vendor_name_2 = 0
            ext_cpuid1_eax = 0
            ext_cpuid1_ebx = 0
            ext_cpuid1_ecx = {
                value = 1U
                bits = {
                    LahfSahf = 1U
                    CmpLegacy = 0
                    lzcnt = 0
                    sse4a = 0
                    misalignsse = 0
                    prefetchw = 0
                }
            }
            ext_cpuid1_edx = {
                value = 537919488U
                bits = {
                    mmx_amd = 0
                    mmx = 0
                    fxsr = 0
                    long_mode = 1U
                    tdnow2 = 0
                    tdnow = 0
                }
            }
            proc_name_0 = 0
            proc_name_1 = 0
            proc_name_2 = 0
            proc_name_3 = 0
            proc_name_4 = 0
            proc_name_5 = 0
            proc_name_6 = 0
            proc_name_7 = 0
            proc_name_8 = 0
            proc_name_9 = 0
            proc_name_10 = 0
            proc_name_11 = 0
            ext_cpuid5_eax = 0
            ext_cpuid5_ebx = 0
            ext_cpuid5_ecx = {
                value = 0
                bits = {
                    L1_line_size = 0
                    L1_tag_lines = 0
                    L1_assoc = 0
                    L1_size = 0
                }
            }
            ext_cpuid5_edx = {
                value = 0
                bits = {
                    L1_line_size = 0
                    L1_tag_lines = 0
                    L1_assoc = 0
                    L1_size = 0
                }
            }
            ext_cpuid8_eax = 12324U
            ext_cpuid8_ebx = 0
            ext_cpuid8_ecx = {
                value = 0
                bits = {
                    cores_per_cpu = 0
                }
            }
            ext_cpuid8_edx = 0
        }

        Below are excerts from email exchange between Christian and Vladimir Kozlov:

        Vladimir:

        family 6 model 23 stepping 10 is Intel(R) Core(TM)2 Duo CPU

        The problem is next (even newest cpus has it value only 11u):

        > std_max_function = 13U

        Is it possible some one stomp bits into the field (? I can't find such cpu here. Christian could you stop when cpuid assembler code is executed at the line 129 and check what value in eax?

        Christian:

        Sure:
         (dbx) p $eax
         $eax = 13U

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  kvn Vladimir Kozlov
                  Reporter:
                  kshiroko Kirill Shirokov (Inactive)
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  1 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved:
                    Imported:
                    Indexed: