[9] RFR (S): 8060147: SIGSEGV in Metadata::mark_on_stack() while marking metadata in ciEnv

Bertrand Delsart bertrand.delsart at oracle.com
Wed Oct 29 15:24:40 UTC 2014

Hi Vladimir,

This seems OK with respect to class unloading but what about class 
redefinition ?

In particular, this may not be sufficient for Method* or MethodData*. 
Still catching up on runtime issues but I think a redefined method has a 
smaller lifetime than its holder class. Hence, it seems that keeping the 
holder klass alive may not be sufficient to ensure a Method* survives as 
long as you need it for the ciMetadata.



On 29/10/14 14:57, Vladimir Ivanov wrote:
> http://cr.openjdk.java.net/~vlivanov/8060147/webrev.00
> https://bugs.openjdk.java.net/browse/JDK-8060147
> ciObjectFactory doesn't keep cached Metadata* alive. ciMetadata is
> different from ciObject - it doesn't store JNI handle, but a raw
> Metadata* pointer.
> In order to avoid Metadata* vanishing during compilation, I cache
> ciObject for it's holder, which should keep corresponding Metadata*
> alive. Cached objects have the same lifetime as the owning
> ciObjectFactory (no cache pruning), so Metadata* will be available as
> long as ciObjectFactory instance is used.
> Also, cleaned relevant comments and strengthened some asserts (since
> NULL keys are not allowed).
> Testing: jprt, stress mode - full Nashorn/Octane with aggressive VM
> anonymous class unloading (LambdaForm/MethodHandle caching completely
> turned off).
> Thanks!
> Best regards,
> Vladimir Ivanov

Bertrand Delsart,                     Grenoble Engineering Center
Oracle,         180 av. de l'Europe,          ZIRST de Montbonnot
38334 Saint Ismier,                                        FRANCE
bertrand.delsart at oracle.com             Phone : +33 4 76 18 81 23

NOTICE: This email message is for the sole use of the intended
recipient(s) and may contain confidential and privileged
information. Any unauthorized review, use, disclosure or
distribution is prohibited. If you are not the intended recipient,
please contact the sender by reply email and destroy all copies of
the original message.

More information about the hotspot-compiler-dev mailing list