RFR: 8360791: [ubsan] Adjust signal handling when using clang

Magnus Ihse Bursie ihse at openjdk.org
Fri Jun 27 16:00:35 UTC 2025


On Fri, 27 Jun 2025 15:45:22 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:

>> A couple of tests e.g. VendorInfoPluginsTest but also some Hotspot like runtime/ErrorHandling/CreateCoredumpOnCrash.java put (write) to special addresses like 0 to provoke crashs.
>> However this does not work well with ubsan-enabled binaries on the clang based platforms (macOS, AIX).
>> The mentioned tests generate a SIGSEGV.
>> 
>> Some other tests generate a SIGBUS, e.g.
>> 
>> runtime/memory/ReserveMemory.java
>> runtime/memory/ReadFromNoaccessArea.java
>> 
>> and this leads to similar issues with ubsan-enabled binaries.
>> 
>> We should adjust the signal handling with the sanitizer options, how to do this is documented here :
>> https://github.com/google/sanitizers/wiki/SanitizerCommonFlags
>
> make/data/ubsan/ubsan_default_options.c line 69:
> 
>> 67:           "handle_segv=0,"
>> 68:           "handle_sigbus=0,"
>> 69: #endif
> 
> I wonder if this should be unconditional, rather than conditional on `__clang__`.
> 
> And maybe we should similarly disable all of the other UBSAN signal handlers,
> to avoid interfering with those installed by the JVM. UBSAN has potential
> handlers for SIGSEGV, SIGBUS, SIGILL, and SIGFPE.  The JVM installs handlers
> for all of those:
> 
> https://github.com/openjdk/jdk/blob/12196baf6700d00c244747cfa22767e532a4a963/src/hotspot/os/posix/signals_posix.cpp#L1316-L1320
> 
> https://github.com/openjdk/jdk/blob/12196baf6700d00c244747cfa22767e532a4a963/src/hotspot/os/posix/jvm_posix.cpp#L46-L56
> 
> Also, the SanitizerCommonFlags documentation has a bug in the description of
> these handle_XXX options. They are described as having values of 0, 1, or 2,
> but the given defaults are true or false.

I agree, this does not seem to be limited to clang, unless the signal handling stuff differs in ubsan in different compilers.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/26015#discussion_r2172334545


More information about the build-dev mailing list