RFR(S) 8235220: ClhsdbScanOops.java fails with sun.jvm.hotspot.types.WrongTypeException

Ioi Lam ioi.lam at oracle.com
Fri Apr 10 05:21:06 UTC 2020


Hi Chris,

Thanks for fixing this. It looks good to me.

- Ioi

On 4/9/20 9:44 PM, Chris Plummer wrote:
> Hello,
>
> Please review the following:
>
> https://bugs.openjdk.java.net/browse/JDK-8235220
> http://cr.openjdk.java.net/~cjplummer/8235220/webrev.00
>
> First off, thanks to Ioi for tracking this one down and proposing the 
> fix.
>
> The test is executing the clhsdb "scanoops" command, which scans the 
> specified heap address range looking for objects of the specified type 
> (or all objects if no type is specified). The test determines the 
> address range by first using clhsdb "universe" to get the start and 
> end of the eden space. scanoops then iterates over this entire range, 
> calling RobustOopDeterminator.oopLooksValid() on each oop as it 
> iterates over the range. The problem is eventually you'll end up past 
> the initialized part of the heap. That causes 
> VirtualBaseConstructor.findDynamicTypeForAddress() to return null, 
> resulting in throwing a WrongTypeException. 
> RobustOopDeterminator.oopLooksValid() should catch this exception and 
> return false when it happens.
>
> The CR mentions a few different failure modes. This only fixes the 
> WrongTypeException failure. The NullPointerException is only on OSX 
> and I believe is the same as JDK-8241158 [1], which happens when 
> dumping the heap, so it seems probable that it is also turning up when 
> scanning part of the heap. I think this bug was preventing us from 
> ever seeing the WrongTypeException on OSX. Then there also JDK-8230731 
> [2] on Windows, which seems to prevent ever seeing the 
> WrongTypeException on Windows.
>
> [1] https://bugs.openjdk.java.net/browse/JDK-8241158
> [2] https://bugs.openjdk.java.net/browse/JDK-8230731
>
> thanks,
>
> Chris



More information about the serviceability-dev mailing list