RFR JDK-8198253: ThreadInfo.from(CompositeData) assigning fields incorrectly in JDK 9

Daniel Fuchs daniel.fuchs at oracle.com
Fri Feb 16 10:51:55 UTC 2018


Hi Jeremy,

I'm not sure I understand exactly what is going on there.
I wonder if this has anything to do with an issue I noticed some
time back when the jvisualvm for JDK 8 and JDK 9 were still out
of sync:
https://bugs.openjdk.java.net/browse/JDK-8167099

I stumbled on that because at the time I was hacking my
developer's build of JDK 9 and trying to make it generate
JDK 8 CompositeDatas. But then as far as I could see that
bug (JDK-8167099) could not be observed in a regular
environment - it was just tickled by my hacks.

Now I'm wondering if what you're seeing is more or less
related to that issue (it might not).

In any case - one possibility if you don't want to create
a new CompositeType might be to pass a filtering lambda
to isTypeMatched.

Something like a BiPredicate<CompositeType, String> that
would take a composite type and a field name and tell
whether to include it or not in the comparison.

best regards,

-- daniel


On 16/02/2018 05:01, Jeremy Manson wrote:
> 
> 
> On Thu, Feb 15, 2018 at 6:40 PM, David Holmes <david.holmes at oracle.com 
> <mailto:david.holmes at oracle.com>> wrote:
> 
>     On 16/02/2018 11:12 AM, Jeremy Manson wrote:
> 
>         Previous bug:
> 
>         https://bugs.openjdk.java.net/browse/JDK-6588467
>         <https://bugs.openjdk.java.net/browse/JDK-6588467>
> 
>         And the review thread:
> 
>         http://mail.openjdk.java.net/pipermail/serviceability-dev/2015-January/016356.html
>         <http://mail.openjdk.java.net/pipermail/serviceability-dev/2015-January/016356.html>
> 
>         I don't think the bug would have been obvious to a reviewer (or,
>         indeed, the author of the patch!), because we would have had to
>         think about how ticd.isCurrentVersion worked, and noticed the
>         fact that some of the fields are optional.
> 
> 
>     I misunderstood the connection to the old bug and review. This is a
>     pre-existing issue that wasn't noticed last time this code was
>     updated - right?
> 
> 
> Sort of.  The uses of isCurrentVersion() didn't happen to need to 
> exclude optional values before I made my changes.  It falls under the 
> category of unstated assumptions.  The method could have been called 
> "isCurrentVersionAndDoesntIgnoreOptionalValues".  :)
> 
> Jeremy



More information about the serviceability-dev mailing list