RFR(S) 8205965: SIGSEGV on write to NativeCallStack::EMPTY_STACK

Zhengyu Gu zgu at redhat.com
Fri Jun 29 18:24:30 UTC 2018


Hi,

I submitted [1] around 9:30AM, but have not seen anything back, could 
anyone check what is going on?

Thanks,

-Zhengyu

[1] 
http://mail.openjdk.java.net/pipermail/jdk-submit-changes/2018-June/002133.html


On 06/29/2018 09:07 AM, Daniel D. Daugherty wrote:
> Please don't forget to do a jdk-submit run.
> 
> Dan
> 
> 
> On 6/29/18 9:04 AM, Zhengyu Gu wrote:
>> Hi,
>>
>> clang-6.0 and above, can deduce that NativeCallStack::EMPTY_STACK is 
>> all zeros, and since it is a static constant, it places the object in 
>> the read-only BSS data section.
>>
>> To workaround static initialization ordering issue, NMT has to ensure 
>> EMPTY_STACK is initialized before turns itself on, which can happen in 
>> the middle of initialization of other static objects. In this case, it 
>> causes SIGSEGV while try to write to the read-only memory.
>>
>> The solution is to make EMPTY_STACk private and non-constant, but 
>> hands out constant version.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8205965
>> Webrev: http://cr.openjdk.java.net/~zgu/8205965/webrev.00/
>>
>> Test:
>>
>>   hotspot_nmt on Linux 64 (fastdebug and release)
>>
>> Thanks,
>>
>> -Zhengyu
>>
> 


More information about the hotspot-runtime-dev mailing list