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

Vladimir Kozlov vladimir.kozlov at oracle.com
Tue Apr 1 21:36:52 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.

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