[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-serviceability-dev
Subject:    Re: RFR: 8276696: ParallelObjectIterator freed at the wrong time in VM_HeapDumper
From:       Erik =?UTF-8?B?w5ZzdGVybHVuZA==?= <eosterlund () openjdk ! java ! net>
Date:       2021-11-23 13:42:06
Message-ID: 8246XgMZ_pumK-BgCx9osG0N9jvJxNGmcJVw8s_0oqo=.d723b7d4-ac0e-4897-af9f-65524377ab87 () github ! com
[Download RAW message or body]

On Tue, 23 Nov 2021 09:42:10 GMT, Per Liden <pliden@openjdk.org> wrote:

> > The VM_HeapDumper code uses a C heap allocated ParallelObjectIterator. It is \
> > constructed right before running a parallel operation with a work gang, but freed \
> > in the destructor of the VM_HeapDumper. This means it is created on one thread \
> > and deleted on another thread. This becomes a bit problematic when a parallel \
> > object iterator implementation uses a ThreadsListHandle (which is indeed the case \
> > for ZGC). This patch changes ParallelObjectIterator to be a StackObj, carrying a \
> > ParallelObjectIteratorImpl object, which is never exposed publicly. This ensures \
> > that construction and destruction of the internal object iterator is scoped like \
> > RAII objects, hence complying with how ThreadsListHandle is supposed to be used.
> 
> Looks good.

Thanks for the reviews, @pliden and @stefank!

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

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic