On Tue, 1 Dec 2020 12:44:24 GMT, Coleen Phillimore <cole...@openjdk.org> wrote:

> The JvmtiTagMap can be deleted while it is posting.  The JvmtiEnv is still on 
> the list but the env is "disposed" of and the tag_map is deleted to save 
> memory until the JvmtiEnv can be reclaimed at a safepoint and taken off the 
> list.
> 
> There's a check JvmtiEnvBase::check_for_periodic_clean_up() that determines 
> whether the JvmtiEnv can be taken off the list and that check looks for 
> whether threads are in the middle of JvmtiEnvIterator which sets 
> Thread::jvmti_env_iteration_count.  So this part is safe for the JvmtiTagMap 
> changes.
> 
> The fix is to clear the JvmtiTagMapTable of the entries inside the table lock 
> to save memory but leave JvmtiTagMap intact so that we can load a valid 
> pointer when iterating through JvmtiEnvIterator.  We could also not do this 
> at all and let the JvmtiTagMap destructor delete the table when the JvmtiEnv 
> is also deleted, but we don't know what customer situation led to this code 
> in the first place.

This pull request has now been integrated.

Changeset: 2508bc7c
Author:    Coleen Phillimore <cole...@openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/2508bc7c
Stats:     25 lines in 5 files changed: 17 ins; 0 del; 8 mod

8257140: Crash in JvmtiTagMap::flush_object_free_events()

Reviewed-by: sspitsyn, kbarrett

-------------

PR: https://git.openjdk.java.net/jdk/pull/1539

Reply via email to