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

Crash in Zipfile.GetEntry

XMLWordPrintable

      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.

            coffeys Sean Coffey
            asaha Abhijit Saha
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: