Review request: 8004710: NPG: jmap could throw sun.jvm.hotspot.types.WrongTypeException after PermGen removal

Stefan Karlsson stefan.karlsson at oracle.com
Wed Jan 30 08:22:00 PST 2013


On 30 jan 2013, at 17:17, Jon Masamitsu <jon.masamitsu at oracle.com> wrote:

> Comment below.
> 
> On 1/29/2013 2:01 PM, Stefan Karlsson wrote:
>> On 29 jan 2013, at 22:53, Jon Masamitsu<jon.masamitsu at oracle.com>  wrote:
>> 
>>> Stefan,
>>> 
>>> Changes look correct.
>> Thanks.
>> 
>>> Did you consider calculating the value for endReserve() all
>>> in the VM (similar to the way ReserveForAllocationPrefetch
>>> is calculated during initialization) and passing the value
>>> to the SA the way ReserveForAllocationPrefetch is passed?
>>> If ReserveForAllocationPrefetch is not used anywhere else,
>>> you could substitute it (TLabEndReserve as a possible name)
>>> for ReserveForAllocationPrefetch.
>> No i didn't think about that. I just tried to mimic the VM code in the SA code. Would you prefer if I changed it to use your alternative solution?
> 
> Scrap the alternate fix suggestion but I'd suggest changing the name
> 
> intArrayHeaderSize
> 
> to
> 
> minFillerArraySize
> 
> What caught my eye about this change is that it was hard
> to understand the use of intArrayHeaderSize unless you knew
> that tlab's had filler arrays inserted in them to make them
> parsable and hotspot saved room at the end of each tlab so
> that a filler object could always be inserted.  If you
> make the name change that give the reader a clue to that.

Sure, I'll update the name. Thanks again for the review.

StefanK

> 
> Ship it.
> 
> Jon
> 
> 
>> thanks,
>> StefanK
>> 
>> 
>>> Jon
>>> 
>>> On 01/29/13 02:58, Stefan Karlsson wrote:
>>>> http://cr.openjdk.java.net/~stefank/8004710/webrev/
>>>> 
>>>> This bug is in the GC specific code in the SA agent.
>>>> 
>>>> From the bug report:
>>>> There's a bug in ObjectHeap.collectLiveRegions(), which tries to collect the regions of the heap that contain live objects. It removes the [top, end) regions of a TLAB, since we don't have live objects in those regions. Unfortunately, this doesn't consider the small alignment_reserve() part at the end of the TLAB, and we try to decode an object in that unused memory region.
>>>> 
>>>> It's not related to the PermGen removal, but the failure mode was probably changed.
>>>> 
>>>> thanks,
>>>> StefanK
>>>> 


More information about the hotspot-dev mailing list