8064815: Zero+PPC64: Stack overflow when running Maven

Tue, 18 Nov 2014 19:17:16 +0100

author
simonis
date
Tue, 18 Nov 2014 19:17:16 +0100
changeset 7599
c6affd32651a
parent 7598
ddce0b7cee93
child 7600
cae03a88934b

8064815: Zero+PPC64: Stack overflow when running Maven
Reviewed-by: kvn, simonis
Contributed-by: sgehwolf@redhat.com

src/cpu/zero/vm/stack_zero.cpp file | annotate | diff | comparison | revisions
src/cpu/zero/vm/stack_zero.inline.hpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/cpu/zero/vm/stack_zero.cpp	Tue Feb 24 15:04:52 2015 -0500
     1.2 +++ b/src/cpu/zero/vm/stack_zero.cpp	Tue Nov 18 19:17:16 2014 +0100
     1.3 @@ -30,7 +30,9 @@
     1.4  
     1.5  int ZeroStack::suggest_size(Thread *thread) const {
     1.6    assert(needs_setup(), "already set up");
     1.7 -  return align_size_down(abi_stack_available(thread) / 2, wordSize);
     1.8 +  int abi_available = abi_stack_available(thread);
     1.9 +  assert(abi_available >= 0, "available abi stack must be >= 0");
    1.10 +  return align_size_down(abi_available / 2, wordSize);
    1.11  }
    1.12  
    1.13  void ZeroStack::handle_overflow(TRAPS) {
     2.1 --- a/src/cpu/zero/vm/stack_zero.inline.hpp	Tue Feb 24 15:04:52 2015 -0500
     2.2 +++ b/src/cpu/zero/vm/stack_zero.inline.hpp	Tue Nov 18 19:17:16 2014 +0100
     2.3 @@ -48,9 +48,11 @@
     2.4  // to use under normal circumstances.  Note that the returned
     2.5  // value can be negative.
     2.6  inline int ZeroStack::abi_stack_available(Thread *thread) const {
     2.7 -  int stack_used = thread->stack_base() - (address) &stack_used;
     2.8 +  guarantee(Thread::current() == thread, "should run in the same thread");
     2.9 +  int stack_used = thread->stack_base() - (address) &stack_used
    2.10 +    + (StackYellowPages+StackRedPages+StackShadowPages) * os::vm_page_size();
    2.11    int stack_free = thread->stack_size() - stack_used;
    2.12 -  return stack_free - shadow_pages_size();
    2.13 +  return stack_free;
    2.14  }
    2.15  
    2.16  #endif // CPU_ZERO_VM_STACK_ZERO_INLINE_HPP

mercurial