When enabling UBSAN (configure flag '--enable-ubsan') on Linux x86_64 in a fastdebug build, the new JVM is already used in the build and runs into this runtime error
/jdk/src/hotspot/share/runtime/signature.hpp:343:42: runtime error: shift exponent 65 is too large for 64-bit type 'long unsigned int'
#0 0x1532f87668d0 in Fingerprinter::do_type(BasicType) /jdk/src/hotspot/share/runtime/signature.hpp:343
#1 0x1532f87668d0 in void SignatureIterator::do_parameters_on<Fingerprinter>(Fingerprinter*) /jdk/src/hotspot/share/runtime/signature.hpp:617
#2 0x1532f87668d0 in Fingerprinter::compute_fingerprint_and_return_type(bool) /jdk/src/hotspot/share/runtime/signature.cpp:169
#3 0x1532f9e4ca28 in Fingerprinter::Fingerprinter(Symbol*, bool) /jdk/src/hotspot/share/runtime/signature.hpp:363
#4 0x1532f9e4ca28 in ConstMethod::compute_from_signature(Symbol*, bool) /jdk/src/hotspot/share/oops/constMethod.cpp:81
#5 0x1532f9c0b360 in ClassFileParser::parse_method(ClassFileStream const*, bool, ConstantPool const*, bool*, JavaThread*) /jdk/src/hotspot/share/classfile/classFileParser.cpp:2733
#6 0x1532f9c0e4cf in ClassFileParser::parse_methods(ClassFileStream const*, bool, bool*, bool*, bool*, JavaThread*) /jdk/src/hotspot/share/classfile/classFileParser.cpp:2866
#7 0x1532f9c1054e in ClassFileParser::parse_stream(ClassFileStream const*, JavaThread*) /jdk/src/hotspot/share/classfile/classFileParser.cpp:5867
#8 0x1532f9c11e1e in ClassFileParser::ClassFileParser(ClassFileStream*, Symbol*, ClassLoaderData*, ClassLoadInfo const*, ClassFileParser::Publicity, JavaThread*) /jdk/src/hotspot/share/classfile/classFileParser.cpp:5593
#9 0x1532fb24c929 in KlassFactory::create_from_stream(ClassFileStream*, Symbol*, ClassLoaderData*, ClassLoadInfo const&, JavaThread*) /jdk/src/hotspot/share/classfile/klassFactory.cpp:202
#10 0x1532f9c3edd1 in ClassLoader::load_class(Symbol*, PackageEntry*, bool, JavaThread*) /jdk/src/hotspot/share/classfile/classLoader.cpp:1169
#11 0x1532fc49db13 in SystemDictionary::load_instance_class_impl(Symbol*, Handle, JavaThread*) /jdk/src/hotspot/share/classfile/systemDictionary.cpp:1279
#12 0x1532fc4986ec in SystemDictionary::load_instance_class(Symbol*, Handle, JavaThread*) /jdk/src/hotspot/share/classfile/systemDictionary.cpp:1343
#13 0x1532fc4998d6 in SystemDictionary::resolve_instance_class_or_null(Symbol*, Handle, Handle, JavaThread*) /jdk/src/hotspot/share/classfile/systemDictionary.cpp:702
... (rest of output omitted)
Not sure if it is a big issue but probably the shifting code should be checked.
/jdk/src/hotspot/share/runtime/signature.hpp:343:42: runtime error: shift exponent 65 is too large for 64-bit type 'long unsigned int'
#0 0x1532f87668d0 in Fingerprinter::do_type(BasicType) /jdk/src/hotspot/share/runtime/signature.hpp:343
#1 0x1532f87668d0 in void SignatureIterator::do_parameters_on<Fingerprinter>(Fingerprinter*) /jdk/src/hotspot/share/runtime/signature.hpp:617
#2 0x1532f87668d0 in Fingerprinter::compute_fingerprint_and_return_type(bool) /jdk/src/hotspot/share/runtime/signature.cpp:169
#3 0x1532f9e4ca28 in Fingerprinter::Fingerprinter(Symbol*, bool) /jdk/src/hotspot/share/runtime/signature.hpp:363
#4 0x1532f9e4ca28 in ConstMethod::compute_from_signature(Symbol*, bool) /jdk/src/hotspot/share/oops/constMethod.cpp:81
#5 0x1532f9c0b360 in ClassFileParser::parse_method(ClassFileStream const*, bool, ConstantPool const*, bool*, JavaThread*) /jdk/src/hotspot/share/classfile/classFileParser.cpp:2733
#6 0x1532f9c0e4cf in ClassFileParser::parse_methods(ClassFileStream const*, bool, bool*, bool*, bool*, JavaThread*) /jdk/src/hotspot/share/classfile/classFileParser.cpp:2866
#7 0x1532f9c1054e in ClassFileParser::parse_stream(ClassFileStream const*, JavaThread*) /jdk/src/hotspot/share/classfile/classFileParser.cpp:5867
#8 0x1532f9c11e1e in ClassFileParser::ClassFileParser(ClassFileStream*, Symbol*, ClassLoaderData*, ClassLoadInfo const*, ClassFileParser::Publicity, JavaThread*) /jdk/src/hotspot/share/classfile/classFileParser.cpp:5593
#9 0x1532fb24c929 in KlassFactory::create_from_stream(ClassFileStream*, Symbol*, ClassLoaderData*, ClassLoadInfo const&, JavaThread*) /jdk/src/hotspot/share/classfile/klassFactory.cpp:202
#10 0x1532f9c3edd1 in ClassLoader::load_class(Symbol*, PackageEntry*, bool, JavaThread*) /jdk/src/hotspot/share/classfile/classLoader.cpp:1169
#11 0x1532fc49db13 in SystemDictionary::load_instance_class_impl(Symbol*, Handle, JavaThread*) /jdk/src/hotspot/share/classfile/systemDictionary.cpp:1279
#12 0x1532fc4986ec in SystemDictionary::load_instance_class(Symbol*, Handle, JavaThread*) /jdk/src/hotspot/share/classfile/systemDictionary.cpp:1343
#13 0x1532fc4998d6 in SystemDictionary::resolve_instance_class_or_null(Symbol*, Handle, Handle, JavaThread*) /jdk/src/hotspot/share/classfile/systemDictionary.cpp:702
... (rest of output omitted)
Not sure if it is a big issue but probably the shifting code should be checked.
- relates to
-
JDK-8338110 Exclude Fingerprinter::do_type from ubsan checks
- Resolved
-
JDK-8340110 Ubsan: verifier.cpp:2043:19: runtime error: shift exponent 100 is too large for 32-bit type 'int'
- Open
-
JDK-8230199 consolidate signature parsing code in HotSpot sources
- Resolved
-
JDK-8298448 UndefinedBehaviorSanitizer
- Resolved