On Wed, 3 Mar 2021 15:57:13 GMT, Gerard Ziemski <gziem...@openjdk.org> wrote:

>> src/hotspot/os_cpu/bsd_aarch64/os_bsd_aarch64.cpp line 207:
>> 
>>> 205:   // Enable WXWrite: this function is called by the signal handler at 
>>> arbitrary
>>> 206:   // point of execution.
>>> 207:   ThreadWXEnable wx(WXWrite, thread);
>> 
>> Note that `thread` can be NULL here if the signal handler is running in a 
>> non-attached thread. If we then perform:
>> `ThreadWXEnable(WXMode new_mode, Thread* thread = NULL) :
>>     _thread(thread ? thread : Thread::current()),`
>> we call Thread::current() on a non-attached thread and that will 
>> assert/crash if we get NULL. Either avoid using WX when the thread is NULL, 
>> or else change to use Thread::current_or_null_safe() and ensure all uses 
>> have a NULL check.
>
>> Note that `thread` can be NULL here if the signal handler is running in a 
>> non-attached thread. If we then perform:
>> `ThreadWXEnable(WXMode new_mode, Thread* thread = NULL) : _thread(thread ? 
>> thread : Thread::current()),`
>> we call Thread::current() on a non-attached thread and that will 
>> assert/crash if we get NULL. Either avoid using WX when the thread is NULL, 
>> or else change to use Thread::current_or_null_safe() and ensure all uses 
>> have a NULL check.
> 
> https://bugs.openjdk.java.net/browse/JDK-8262903 tracks this issue.

Thanks for report and analysis! I fixed this in 
https://github.com/openjdk/jdk/pull/2200/commits/f6fb01b24f525e578692a1c6f2ff0a55b8233576

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

PR: https://git.openjdk.java.net/jdk/pull/2200

Reply via email to