-
Bug
-
Resolution: Duplicate
-
P3
-
6u38
-
solaris_10
JVM died by SIGSEGV at ZipFile.getEntry.
Stack: [0xffff80ffb296e000,0xffff80ffb2a6e000], sp=0xffff80ffb2a6b078, free space=1012k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [libc.so.1+0x8d4fe] memcpy+0x135e C [libzip.so+0xe121] ZIP_GetEntry+0x91
C [libzip.so+0x4ef1] Java_java_util_zip_ZipFile_getEntry+0xa1 J java.util.zip.ZipFile.getEntry(JLjava/lang/String;Z)J
testcase present
The java sources are in testcase.tar.
CrashTest.java is very simple:
=======================================================
package mypkg1;
import java.io.IOException;
public class CrashTest {
public static boolean loadClass(String cname) {
try {
System.out.println("loading class :" + cname);
Class.forName(cname);
System.out.println("loading class :" + cname + " done.");
return(true);
} catch (ClassNotFoundException e) {
System.out.println("failed to load class '" + cname + "': " + e);
} return(false);
}
/**
* param args
*/
public static void main(String[] args) {
if (! loadClass("mypkg2.MyClass1")) {
System.out.println("loadClass failed.");
return;
}
System.out.println("Press enter to continue...");
try {
System.in.read();
} catch (IOException e) {
return;
}
if (! loadClass("mypkg2.MyClass2")) {
System.out.println("loadClass failed.");
return;
}
System.out.println("main done");
}
}
=======================================================
This program does:
load mypkg2.MyClass1
wait for keyboard input
load mypkg2.MyClass2
mypkg2.MyClass1 and mypkg2.MyClass2 are in mypkg2_v1.jar and mypkg2_v2.jar:
=======================================================
# jar tvf mypkg2_v1.jar
0 Mon Sep 02 09:45:30 KST 2013 META-INF/
71 Mon Sep 02 09:45:30 KST 2013 META-INF/MANIFEST.MF
681 Mon Sep 02 09:45:30 KST 2013 mypkg2/MyClass1.class
681 Mon Sep 02 09:45:30 KST 2013 mypkg2/MyClass2.class
# jar tvf mypkg2_v2.jar
0 Mon Sep 02 09:45:30 KST 2013 META-INF/
71 Mon Sep 02 09:45:30 KST 2013 META-INF/MANIFEST.MF
734 Mon Sep 02 09:45:30 KST 2013 mypkg2/MyClass1.class
734 Mon Sep 02 09:45:30 KST 2013 mypkg2/MyClass2.class
=======================================================
If CrashTest is run without changing the jar file (ie. if you skip step 3)
there is no problem.
Stack: [0xffff80ffb296e000,0xffff80ffb2a6e000], sp=0xffff80ffb2a6b078, free space=1012k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [libc.so.1+0x8d4fe] memcpy+0x135e C [libzip.so+0xe121] ZIP_GetEntry+0x91
C [libzip.so+0x4ef1] Java_java_util_zip_ZipFile_getEntry+0xa1 J java.util.zip.ZipFile.getEntry(JLjava/lang/String;Z)J
testcase present
The java sources are in testcase.tar.
CrashTest.java is very simple:
=======================================================
package mypkg1;
import java.io.IOException;
public class CrashTest {
public static boolean loadClass(String cname) {
try {
System.out.println("loading class :" + cname);
Class.forName(cname);
System.out.println("loading class :" + cname + " done.");
return(true);
} catch (ClassNotFoundException e) {
System.out.println("failed to load class '" + cname + "': " + e);
} return(false);
}
/**
* param args
*/
public static void main(String[] args) {
if (! loadClass("mypkg2.MyClass1")) {
System.out.println("loadClass failed.");
return;
}
System.out.println("Press enter to continue...");
try {
System.in.read();
} catch (IOException e) {
return;
}
if (! loadClass("mypkg2.MyClass2")) {
System.out.println("loadClass failed.");
return;
}
System.out.println("main done");
}
}
=======================================================
This program does:
load mypkg2.MyClass1
wait for keyboard input
load mypkg2.MyClass2
mypkg2.MyClass1 and mypkg2.MyClass2 are in mypkg2_v1.jar and mypkg2_v2.jar:
=======================================================
# jar tvf mypkg2_v1.jar
0 Mon Sep 02 09:45:30 KST 2013 META-INF/
71 Mon Sep 02 09:45:30 KST 2013 META-INF/MANIFEST.MF
681 Mon Sep 02 09:45:30 KST 2013 mypkg2/MyClass1.class
681 Mon Sep 02 09:45:30 KST 2013 mypkg2/MyClass2.class
# jar tvf mypkg2_v2.jar
0 Mon Sep 02 09:45:30 KST 2013 META-INF/
71 Mon Sep 02 09:45:30 KST 2013 META-INF/MANIFEST.MF
734 Mon Sep 02 09:45:30 KST 2013 mypkg2/MyClass1.class
734 Mon Sep 02 09:45:30 KST 2013 mypkg2/MyClass2.class
=======================================================
If CrashTest is run without changing the jar file (ie. if you skip step 3)
there is no problem.
- duplicates
-
JDK-8145260 To bring j.u.z.ZipFile's native implementation to Java to remove the expensive jni cost and mmap crash risk [2]
- Resolved