[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