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

Roland Westrelin roland.westrelin at oracle.com
Tue Apr 1 15:00:01 UTC 2014


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