RFR(L): 8032410: compiler/uncommontrap/TestStackBangRbp.java times out on Solaris-Sparc V9

Roland Westrelin roland.westrelin at oracle.com
Wed Apr 2 08:46:29 UTC 2014


> The question is why you got EXCEPTION_ACCESS_VIOLATION for normal stack bang?  May be it is 8026775 again when one page is skipped during banging. Windows requires sequential pages touche.

I wasn’t aware of this requirement on windows. Thanks, Vladimir.
The interpreter bangs up to and including sp + StackShadowPages while the compiled code, with this change, bangs at sp + StackShadowPages + 1. So a page can be skipped and the requirement that all pages be touched sequentially cannot be guaranteed. So we either have to go back to banging at sp + StackShadowPages for the compiled code or enable the code that I pointed to in the signal on 32 bit. What do you think?

Roland.

> 
> Thanks,
> Vladimir
> 
> On 4/1/14 8:00 AM, Roland Westrelin wrote:
>> I tried to push that change and couldn’t because of a crash on windows 32 bit. The VM crashes at a stack banging instruction in compiled code but the sp looks to be perfectly valid (not in the yellow zone or red zone, within the stack bounds). I noticed this code in the windows signal handler:
>> 
>> #ifdef _WIN64
>>           //
>>           // If it's a legal stack address map the entire region in
>>           //
>>           PEXCEPTION_RECORD exceptionRecord = exceptionInfo->ExceptionRecord;
>>           address addr = (address) exceptionRecord->ExceptionInformation[1];
>>           if (addr > thread->stack_yellow_zone_base() && addr < thread->stack_base() ) {
>>                   addr = (address)((uintptr_t)addr &
>>                          (~((uintptr_t)os::vm_page_size() - (uintptr_t)1)));
>>                   os::commit_memory((char *)addr, thread->stack_base() - addr,
>>                                     !ExecMem);
>>                   return EXCEPTION_CONTINUE_EXECUTION;
>>           }
>>           else
>> #endif
>> 
>> If I enable it on 32 bit, the jprt tests pass. Does anybody know why this is needed? Why this is WIN64 only?
>> 
>> Roland.
>> 



More information about the hotspot-compiler-dev mailing list