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

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Thu Oct 30 13:51:25 UTC 2014


Roland,

Good catch! I think you are right.
Threads::metadata_do is called only from MetadataOnStack.

As a solution, _holder can be passed into ciMethod::ciMethod as a 
parameter. It should fix the problem.

Best regards,
Vladimir Ivanov

On 10/30/14, 4:48 PM, Roland Westrelin wrote:
>>> _holder = env->get_instance_klass(h_m()->method_holder());
>>>
>>> So if jvmti is enabled, we could safepoint before we set the holder field and the method could be unloaded?
>> Doesn't method handle (h_m) keep it alive?
>
> A comment in handles.hpp says:
>
> // Metadata Handles.  Unlike oop Handles these are needed to prevent metadata
> // from being reclaimed by RedefineClasses.
>
> So that doesn’t help with class unloading?
>
> Roland.
>


More information about the hotspot-runtime-dev mailing list