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

Race in java_lang_String::length() when deduplicating

    Details

    • Subcomponent:
    • Resolved In Build:
      b12
    • CPU:
      generic
    • OS:
      generic

      Description

      Shenandoah CI reports an assertion failure:

      # Internal Error (/home/jenkins/workspace/nightly/shenandoah-jdk/src/hotspot/share/classfile/javaClasses.inline.hpp:78), pid=22355, tid=22358
      # assert(oopDesc::equals(value, java_lang_String::value(java_string))) failed: value must be same as java_lang_String::value(java_string)

      This seems to be caused by String.value changing concurrently caused by String deduplication.

      The call stack is:

      Stack: [0x00002b41db723000,0x00002b41db824000], sp=0x00002b41db821120, free space=1016k
      Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
      V [libjvm.so+0xd68c5c] java_lang_String::length(oop, typeArrayOop)+0x32c
      V [libjvm.so+0xe83801] jni_GetStringLength+0x2b1
      C [libjava.so+0xd6d8] getUTF+0x38
      C [libjava.so+0xd9b0] Java_java_lang_ClassLoader_defineClass1+0x100
      j java.lang.ClassLoader.defineClass1(Ljava/lang/ClassLoader;Ljava/lang/String;[BIILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class;+0 java.base@13-internal
      j java.lang.ClassLoader.defineClass(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;+27 java.base@13-internal
      j java.security.SecureClassLoader.defineClass(Ljava/lang/String;[BIILjava/security/CodeSource;)Ljava/lang/Class;+12 java.base@13-internal
      j jdk.internal.loader.BuiltinClassLoader.defineClass(Ljava/lang/String;Ljdk/internal/loader/Resource;)Ljava/lang/Class;+117 java.base@13-internal
      j jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Ljava/lang/String;)Ljava/lang/Class;+37 java.base@13-internal
      j jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Ljava/lang/String;Z)Ljava/lang/Class;+111 java.base@13-internal
      j jdk.internal.loader.BuiltinClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class;+3 java.base@13-internal
      j jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class;+36 java.base@13-internal
      j java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class;+3 java.base@13-internal
      v ~StubRoutines::call_stub
      V [libjvm.so+0xda13bd] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, Thread*)+0x74d
      V [libjvm.so+0xd9ddfd] JavaCalls::call_virtual(JavaValue*, Klass*, Symbol*, Symbol*, JavaCallArguments*, Thread*)+0x3bd
      V [libjvm.so+0xd9e115] JavaCalls::call_virtual(JavaValue*, Handle, Klass*, Symbol*, Symbol*, Handle, Thread*)+0x115
      V [libjvm.so+0x16e5197] SystemDictionary::load_instance_class(Symbol*, Handle, Thread*)+0x267
      V [libjvm.so+0x16e3ca4] SystemDictionary::resolve_instance_class_or_null(Symbol*, Handle, Handle, Thread*)+0xc34
      V [libjvm.so+0x16e3ee2] SystemDictionary::resolve_instance_class_or_null_helper(Symbol*, Handle, Handle, Thread*)+0xa2
      V [libjvm.so+0x16e5b0d] SystemDictionary::resolve_or_fail(Symbol*, Handle, Handle, bool, Thread*)+0x4d
      V [libjvm.so+0xf015a2] find_class_from_class_loader(JNIEnv_*, Symbol*, unsigned char, Handle, Handle, unsigned char, Thread*)+0x32
      V [libjvm.so+0xf0594f] JVM_FindClassFromCaller+0x3af
      C [libjava.so+0xd560] Java_java_lang_Class_forName0+0x140
      j java.lang.Class.forName0(Ljava/lang/String;ZLjava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Class;+0 java.base@13-internal
      j java.lang.Class.forName(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;+43 java.base@13-internal
      j sun.launcher.LauncherHelper.loadMainClass(ILjava/lang/String;)Ljava/lang/Class;+93 java.base@13-internal
      j sun.launcher.LauncherHelper.checkAndLoadMain(ZILjava/lang/String;)Ljava/lang/Class;+42 java.base@13-internal
      v ~StubRoutines::call_stub
      V [libjvm.so+0xda13bd] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, Thread*)+0x74d
      V [libjvm.so+0xe62042] jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*) [clone .isra.178]+0x3c2
      V [libjvm.so+0xe888c9] jni_CallStaticObjectMethod+0x1f9
      C [libjli.so+0x494c] JavaMain+0x7dc

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                redestad Claes Redestad
                Reporter:
                rkennke Roman Kennke
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: