[Bugme-new] [Bug 10720] New: SIGSEGV or SIGILL crash of SUN JVM 1.6 32 bit in Linux x86_64 in VMware ESX

bugme-daemon at bugzilla.kernel.org bugme-daemon at bugzilla.kernel.org
Fri May 16 02:47:10 PDT 2008


http://bugzilla.kernel.org/show_bug.cgi?id=10720

           Summary: SIGSEGV or SIGILL crash of SUN JVM 1.6 32 bit in Linux
                    x86_64 in VMware ESX
           Product: Memory Management
           Version: 2.5
     KernelVersion: 2.6.18-6-amd64 and openSUSE 2.6.22.5-31-default and
                    sles10-sp1-s
          Platform: All
        OS/Version: Linux
              Tree: Mainline
            Status: NEW
          Severity: high
          Priority: P1
         Component: Other
        AssignedTo: akpm at osdl.org
        ReportedBy: michael.burger at softmatch.net


Latest working kernel version:
all 2.6 i686 kernels

Earliest failing kernel version:
since change to x86_64 kernels

Distribution:
- Debial 4.0 (Etch)
- SuSE Enterprise Server 10
- openSUSE 10.3 (X86-64)

Hardware Environment:
- VMware ESX host, 1 CPU (Intel(R) Xeon(TM) CPU 3.00GHz)
- MemTotal:      2063116 kB

Software Environment:
SUN's Java JDK / JRE 1.6.0_06 as well as 1.6.0_10 in its 32 bit edition.

Problem Description:
Sproradic but reproducible JVM (Hotspot) crashes getting a SIGSEGV or SIGILL
while unning a simple garbage collector stress application seval times in
parallel.

hs_err files are generated each time.

The problem only appears using JDK or JRE 1.6 32 bit edition on a Linux 2.6
x86_64 kernel in VMware.

Tests using real hardware, using a i686 kernel and using JDK / JRE 1.6 64 bit
edition or JDK / JRE 1.5 (32 bit and 64 bit) could not reproduce the crashes.

Steps to reproduce:

Run the attached simple Java application, no matter if compiled using a JDK 1.5
or JDK 1.6.
Run it in parallel with these parameters to produce it more often:

java -server -Xms32m -Xms256m GCStress 1000 10485760

public class GCStress {
    private static Thread[] threads;
    private static java.util.Random random = new java.util.Random();
    private static int maxBytes;
    private static int numThreads;

    public static void main(String[] args) {
        numThreads = Integer.parseInt(args[0]);
        maxBytes = Integer.parseInt(args[1]);
        threads = new Thread[numThreads];
        for (int x = 0; x < numThreads; x++) {
            threads[x] = new Thread(new Allocator(), "Thread_" + x);
            threads[x].start();
        }

        while (true) {
            for (int x = 0; x < numThreads; x++) {
                if (!threads[x].isAlive()) {
                    threads[x] = new Thread(new Allocator(), "Thread_r" + x);
                    threads[x].start();
                }
            }
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                // ignore
            }

        }
    }

    private static class Allocator implements Runnable {
        public void run() {
            while (true) {
                int tSize = random.nextInt(maxBytes);
//                System.out.println(Thread.currentThread().getName()
//                        + " allocating " + tSize / 1024 + "kb");
                byte[] tMemFiller = new byte[tSize];
                try {
                    Thread.sleep(random.nextInt(200));
                } catch (InterruptedException e) {
                    ; // ignore
                }
            }
        }
    };
}



Expected and Actual Results:

After about 5 minutes running (in VMware), some or all applications crash.
Often, two and more of the parallel applications crash almost at the same time.

hs_err files are generated and show:
- SIGILL
- SIGSEGV

often but not always while the JVM is in a safepoint, e.g.
VM_Operation (0xe371ee1c): GenCollectForAllocation, mode: safepoint, requested
by thread 0x08217000


-- 
Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


More information about the Bugme-new mailing list