AMD64: JVM crashes during uncommon_trap_blob and deopt_blob
tom.rodriguez at oracle.com
Tue Nov 1 20:32:28 PDT 2011
>> The fix aligns the stack pointer as required by x64 ABI before calling into the VM. It fixes the uncommon_trap_blob as well as the deopt_blob. Few adjustments have to be made:
>> Since due to the aligned SP the runtime cannot easily retrieve the return PC any more we have to store it into the last java frame as well and adapt the call site's oop map accordingly. The deoptimization blob does SP-relative addressing after the runtime call, so we have to restore the unaligned SP before doing this using the stored value.
> Thanks for sending this in. I think your change looks good, though the imprecision of the last_pc slightly bugs me. We could conceivably fix it up after emitting the actual call but that seems too clever for this problem. I'll take your bits and run some of our deopt tests on it and see how it looks.
I ran deoptimizealot testing on these changes along with an adhoc test to check for proper stack alignment. It failed immediately before you changes and passed with them. I'm going to go ahead and push your changes and I'll file a separate bug to add a more systematic check for proper alignment when coming in from generated code. We've mainly fixed these as we've found them but it should be cleaned up. A webrev with commit message is at http://cr.openjdk.java.net/~never/6636110. Thanks!
>> Best regards,
More information about the hotspot-compiler-dev