7119286: JSR292: SIGSEGV in JNIHandleBlock::release_block(JNIHandleBlock*, Thread*)+0x3c

Wed, 08 Feb 2012 09:52:24 +0100

author
roland
date
Wed, 08 Feb 2012 09:52:24 +0100
changeset 3522
c742b0b47fe5
parent 3521
b9bc6cae88f2
child 3523
2f985b6ce7ff

7119286: JSR292: SIGSEGV in JNIHandleBlock::release_block(JNIHandleBlock*, Thread*)+0x3c
Summary: unaligned stack in throw_NullPointerException_at_call_entry().
Reviewed-by: twisti, never, kvn

src/cpu/x86/vm/stubGenerator_x86_64.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Tue Feb 07 16:33:43 2012 -0800
     1.2 +++ b/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Wed Feb 08 09:52:24 2012 +0100
     1.3 @@ -2978,7 +2978,9 @@
     1.4      int frame_complete = __ pc() - start;
     1.5  
     1.6      // Set up last_Java_sp and last_Java_fp
     1.7 -    __ set_last_Java_frame(rsp, rbp, NULL);
     1.8 +    address the_pc = __ pc();
     1.9 +    __ set_last_Java_frame(rsp, rbp, the_pc);
    1.10 +    __ andptr(rsp, -(StackAlignmentInBytes));    // Align stack
    1.11  
    1.12      // Call runtime
    1.13      if (arg1 != noreg) {
    1.14 @@ -2997,7 +2999,7 @@
    1.15  
    1.16      oop_maps->add_gc_map(__ pc() - start, map);
    1.17  
    1.18 -    __ reset_last_Java_frame(true, false);
    1.19 +    __ reset_last_Java_frame(true, true);
    1.20  
    1.21      __ leave(); // required for proper stackwalking of RuntimeStub frame
    1.22  

mercurial