A couple of tests e.g. VendorInfoPluginsTest but also some Hotspot crash tests put (write) to special addresses like 0 to provoke crashs.
However this does not work well with ubsan on the clang based platforms (macOS, AIX).
See the following issues :
tools/jlink/plugins/VendorInfoPluginsTest
AIX
WARNING: sun.misc.Unsafe::putLong will be removed in a future release
UndefinedBehaviorSanitizer:DEADLYSIGNAL
==11928028==ERROR: UndefinedBehaviorSanitizer: SEGV on unknown address 0x000000000000 (pc 0x90000000f303da8 bp 0x0001102dcb10 sp 0x0001102dcb10 T46137665)
==11928028==The signal is caused by a UNKNOWN memory access.
==11928028==Hint: address points to the zero page.
/opt/IBM/openxlC/17.1.2/tools/.ibm-llvm-symbolizer.orig: error: 'shmid:244319769 ': No such file or directory
/opt/IBM/openxlC/17.1.2/tools/.ibm-llvm-symbolizer.orig: error: '/usr/lib/libpthread.a': No object file for requested architecture
#0 0x90000000f303da8 in MemoryAccess<long>::put(long) make/hotspot/src/hotspot/share/prims/unsafe.cpp:250
#1 0x90000000f303da8 in Unsafe_PutLong(JNIEnv_*, _jobject*, _jobject*, long, long) make/hotspot/src/hotspot/share/prims/unsafe.cpp:319
#2 0xa0001000741df08 (shmid:244319769 +0x741df08)
#3 0xa00010007418298 (shmid:244319769 +0x7418298)
#4 0xa00010007418298 (shmid:244319769 +0x7418298)
#5 0xa00010007418298 (shmid:244319769 +0x7418298)
#6 0xa00010007410838 (shmid:244319769 +0x7410838)
#7 0x90000000f367468 in JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*) make/hotspot/src/hotspot/share/runtime/javaCalls.cpp:415
#8 0x90000000f36aef8 in os::os_exception_wrapper(void (*)(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*), JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*) make/hotspot/src/hotspot/os/aix/os_aix.cpp:2395
#9 0x90000000f366eac in JavaCalls::call(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*) make/hotspot/src/hotspot/share/runtime/javaCalls.cpp:323
#10 0x90000000f8701cc in jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, JavaThread*) make/hotspot/src/hotspot/share/prims/jni.cpp:883
#11 0x90000000f874988 in jni_CallStaticVoidMethod make/hotspot/src/hotspot/share/prims/jni.cpp:1712
macOS aarch64 :
UndefinedBehaviorSanitizer:DEADLYSIGNAL
==96389==ERROR: UndefinedBehaviorSanitizer: SEGV on unknown address 0x000000000000 (pc 0x00010a258274 bp 0x00016b136820 sp 0x00016b136800 T-1878550938)
==96389==The signal is caused by a WRITE memory access.
==96389==Hint: address points to the zero page.
#0 0x10a258274 in MemoryAccess<long>::put(long) unsafe.cpp:250
#1 0x10a2521ec in Unsafe_PutLong(JNIEnv_*, _jobject*, _jobject*, long, long) unsafe.cpp:319
#2 0x112e1463c (<unknown module>)
#3 0x112e10a8c (<unknown module>)
#4 0x112e10a8c (<unknown module>)
#5 0x112e10a8c (<unknown module>)
#6 0x112e0c150 (<unknown module>)
#7 0x10999daa8 in JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*) javaCalls.cpp:415
#8 0x109a7402c in jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, JavaThread*) jni.cpp:883
#9 0x109a76e20 in jni_CallStaticVoidMethod jni.cpp:1712
#10 0x105415fb0 in invokeStaticMainWithArgs java.c:392
#11 0x105418288 in JavaMain java.c:640
#12 0x10541d53c in ThreadJavaMain java_md_macosx.m:679
#13 0x1936fef90 in _pthread_start+0x84 (libsystem_pthread.dylib:arm64e+0x6f90)
#14 0x1936f9d30 in thread_start+0x4 (libsystem_pthread.dylib:arm64e+0x1d30)
On gcc we solved the same issue by ATTRIBUTE_NO_UBSAN to the put method in unsafe.cpp ; but this seems not to work with clang.
However this does not work well with ubsan on the clang based platforms (macOS, AIX).
See the following issues :
tools/jlink/plugins/VendorInfoPluginsTest
AIX
WARNING: sun.misc.Unsafe::putLong will be removed in a future release
UndefinedBehaviorSanitizer:DEADLYSIGNAL
==11928028==ERROR: UndefinedBehaviorSanitizer: SEGV on unknown address 0x000000000000 (pc 0x90000000f303da8 bp 0x0001102dcb10 sp 0x0001102dcb10 T46137665)
==11928028==The signal is caused by a UNKNOWN memory access.
==11928028==Hint: address points to the zero page.
/opt/IBM/openxlC/17.1.2/tools/.ibm-llvm-symbolizer.orig: error: 'shmid:244319769 ': No such file or directory
/opt/IBM/openxlC/17.1.2/tools/.ibm-llvm-symbolizer.orig: error: '/usr/lib/libpthread.a': No object file for requested architecture
#0 0x90000000f303da8 in MemoryAccess<long>::put(long) make/hotspot/src/hotspot/share/prims/unsafe.cpp:250
#1 0x90000000f303da8 in Unsafe_PutLong(JNIEnv_*, _jobject*, _jobject*, long, long) make/hotspot/src/hotspot/share/prims/unsafe.cpp:319
#2 0xa0001000741df08 (shmid:244319769 +0x741df08)
#3 0xa00010007418298 (shmid:244319769 +0x7418298)
#4 0xa00010007418298 (shmid:244319769 +0x7418298)
#5 0xa00010007418298 (shmid:244319769 +0x7418298)
#6 0xa00010007410838 (shmid:244319769 +0x7410838)
#7 0x90000000f367468 in JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*) make/hotspot/src/hotspot/share/runtime/javaCalls.cpp:415
#8 0x90000000f36aef8 in os::os_exception_wrapper(void (*)(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*), JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*) make/hotspot/src/hotspot/os/aix/os_aix.cpp:2395
#9 0x90000000f366eac in JavaCalls::call(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*) make/hotspot/src/hotspot/share/runtime/javaCalls.cpp:323
#10 0x90000000f8701cc in jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, JavaThread*) make/hotspot/src/hotspot/share/prims/jni.cpp:883
#11 0x90000000f874988 in jni_CallStaticVoidMethod make/hotspot/src/hotspot/share/prims/jni.cpp:1712
macOS aarch64 :
UndefinedBehaviorSanitizer:DEADLYSIGNAL
==96389==ERROR: UndefinedBehaviorSanitizer: SEGV on unknown address 0x000000000000 (pc 0x00010a258274 bp 0x00016b136820 sp 0x00016b136800 T-1878550938)
==96389==The signal is caused by a WRITE memory access.
==96389==Hint: address points to the zero page.
#0 0x10a258274 in MemoryAccess<long>::put(long) unsafe.cpp:250
#1 0x10a2521ec in Unsafe_PutLong(JNIEnv_*, _jobject*, _jobject*, long, long) unsafe.cpp:319
#2 0x112e1463c (<unknown module>)
#3 0x112e10a8c (<unknown module>)
#4 0x112e10a8c (<unknown module>)
#5 0x112e10a8c (<unknown module>)
#6 0x112e0c150 (<unknown module>)
#7 0x10999daa8 in JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*) javaCalls.cpp:415
#8 0x109a7402c in jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, JavaThread*) jni.cpp:883
#9 0x109a76e20 in jni_CallStaticVoidMethod jni.cpp:1712
#10 0x105415fb0 in invokeStaticMainWithArgs java.c:392
#11 0x105418288 in JavaMain java.c:640
#12 0x10541d53c in ThreadJavaMain java_md_macosx.m:679
#13 0x1936fef90 in _pthread_start+0x84 (libsystem_pthread.dylib:arm64e+0x6f90)
#14 0x1936f9d30 in thread_start+0x4 (libsystem_pthread.dylib:arm64e+0x1d30)
On gcc we solved the same issue by ATTRIBUTE_NO_UBSAN to the put method in unsafe.cpp ; but this seems not to work with clang.
- relates to
-
JDK-8351490 ATTRIBUTE_NO_UBSAN seems not to work on macOS and AIX
-
- Open
-