--- old/src/cpu/x86/vm/macroAssembler_x86.cpp 2013-10-31 15:52:27.458808536 -0700 +++ new/src/cpu/x86/vm/macroAssembler_x86.cpp 2013-10-31 15:52:27.370853644 -0700 @@ -1381,8 +1381,10 @@ jcc(Assembler::greater, loop); // Bang down shadow pages too. - // The -1 because we already subtracted 1 page. - for (int i = 0; i< StackShadowPages-1; i++) { + // Skip the first one because that was already touched in the above + // loop - the post decrement of temp means it's now a page below the + // last touch + for (int i = 1; i <= StackShadowPages; i++) { // this could be any sized move but this is can be a debugging crumb // so the bigger the better. movptr(Address(tmp, (-i*os::vm_page_size())), size );