RFR(XS): 7198074: NPG: assert(((Metadata*)obj)->is_valid()) failed: obj is valid
Vladimir Kozlov
vladimir.kozlov at oracle.com
Thu Sep 13 08:28:19 PDT 2012
Good.
Vladimir
Roland Westrelin wrote:
> http://cr.openjdk.java.net/~roland/7198074/webrev.00/
>
> The C1 register allocator allocates O7 to a piece of tiered compilation profiling code due to a missing test for T_METADATA in LinearScanWalker::pd_init_regs_for_alloc() following changes for 7195816. O7 should never be allocated by the register allocator. O7 is used to contain a Method pointer. A counter overflows, the profiling code calls the runtime, it moves O7 to another register in the shadow of the call and because O7 is used to keep the return address of the call, the Method pointer is overwritten with an address in the code. So when the runtime code tries to manipulate the Method pointer, something bad happens.
>
> Roland.
More information about the hotspot-compiler-dev
mailing list