[jdk24u] RFR: 8352946: SEGV_BND signal code of SIGSEGV missing from our signal-code table

Thomas Stuefe stuefe at openjdk.org
Wed Apr 2 15:31:58 UTC 2025


On Wed, 2 Apr 2025 15:20:21 GMT, Matthias Baesken <mbaesken at openjdk.org> wrote:

>> src/hotspot/os/posix/signals_posix.cpp line 976:
>> 
>>> 974:     { SIGSEGV, SEGV_MAPERR,  "SEGV_MAPERR",  "Address not mapped to object." },
>>> 975:     { SIGSEGV, SEGV_ACCERR,  "SEGV_ACCERR",  "Invalid permissions for mapped object." },
>>> 976: #if defined(LINUX)
>> 
>> Suggestion:
>> 
>> #if defined(SEGV_BNDERR)
>> 
>> safer; in case other platforms have this too, and in case Linux has this not. As long as this is a macro, at least.
>
> I define it (line 54) if it is not there so it should be safe.

Hmm, okay. 

That means that when we build on an older machine, and Linux kernels change the constant in newer kernel releases, we may use the wrong number.

What I would do is this:


#define SEGV_BNDERR_value 3
#if defined(SEGV_BNDERR)
STATIC_ASSERT(SEGV_BNDERR == SEGV_BNDERR_value)
#else
#define SEGV_BNDERR SEGV_BNDERR_value
#endif


The static assert will alert us if we build on a newer Linux version and turns out we were wrong with our assumed number.

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

PR Review Comment: https://git.openjdk.org/jdk24u/pull/175#discussion_r2025086239


More information about the jdk-updates-dev mailing list