JMC-6149: Distinguish by package with default packages in the traces does not work
Alex Macdonald
almacdon at redhat.com
Mon Dec 3 19:58:28 UTC 2018
Hi Marcus,
On Mon, Dec 3, 2018 at 10:40 AM Marcus Hirt <marcus.hirt at oracle.com> wrote:
> Looks good Alex!
>
> Kind regards,
> Marcus
>
Great! Thanks for reviewing it.
I've attached an exported patch ready for pushing, Mario are you able to
sponsor this one?
Cheers,
Alex
>
> On 2018-12-03, 16:25, "jmc-dev on behalf of Alex Macdonald" <
> jmc-dev-bounces at openjdk.java.net on behalf of almacdon at redhat.com> wrote:
>
> Hi,
>
> This patch addresses JMC-6149 [0], in which the stack trace tree
> disappears
> when a default package is encountered when selecting the option
> "Distinguish Frames by Package". For testing purposes, I have been
> using
> the memoryleak.jfr recording that is available as an attachment on
> JMC-6127
> [1]
>
> The problem here is a NPE being thrown when checking whether if the
> category object equals the cached lastCategory object [2]. If the
> current
> frame has no corresponding package then the package attribute will be
> null
> [3], which then causes "category" to be null.
>
> In StructTypes.java [4], there are precautions in place for handling
> unknown methods and classes [5] so null values aren't passed around,
> but
> nothing in place to handle unknown packages. This patch introduces a
> null
> check in the IMCType implementation to mimic how the method [6] and
> class
> [7] implementations currently handle null values. Additionally, a null
> check must be made in the convertNames() and getName() methods that
> access
> the package name, because if it is null then the
> MethodToolkit.refTypeToBinaryJLS() [8] will throw an NPE when trying
> to get
> the length of the name.
>
> I've taken a couple screenshots to show the before and after of this
> patch,
> as well as a couple gifs to show how to reproduce the behaviour. Link
> to
> imgur album: https://imgur.com/a/0hNekjh
>
> Before (image): https://imgur.com/VnvwMkQ
> Before (gif): https://imgur.com/gZcPDCF
> After (image): https://imgur.com/TOyalSG
> After (gif): https://imgur.com/7GaCMII
>
> Thoughts?
>
> Cheers,
>
> Alex
>
> [0] https://bugs.openjdk.java.net/browse/JMC-6149
> [1] https://bugs.openjdk.java.net/browse/JMC-6127
> [2]
>
> http://hg.openjdk.java.net/jmc/jmc/file/997060a24c42/core/org.openjdk.jmc.flightrecorder/src/main/java/org/openjdk/jmc/flightrecorder/stacktrace/StacktraceModel.java#l197
> [3] https://imgur.com/ktUJvo5
> [4]
>
> http://hg.openjdk.java.net/jmc/jmc/file/997060a24c42/core/org.openjdk.jmc.flightrecorder/src/main/java/org/openjdk/jmc/flightrecorder/internal/parser/v1/StructTypes.java
> [5]
>
> http://hg.openjdk.java.net/jmc/jmc/file/997060a24c42/core/org.openjdk.jmc.flightrecorder/src/main/java/org/openjdk/jmc/flightrecorder/internal/parser/v1/StructTypes.java#l67
> [6]
>
> http://hg.openjdk.java.net/jmc/jmc/file/997060a24c42/core/org.openjdk.jmc.flightrecorder/src/main/java/org/openjdk/jmc/flightrecorder/internal/parser/v1/StructTypes.java#l580
> [7]
>
> http://hg.openjdk.java.net/jmc/jmc/file/997060a24c42/core/org.openjdk.jmc.flightrecorder/src/main/java/org/openjdk/jmc/flightrecorder/internal/parser/v1/StructTypes.java#l661
> [8]
>
> http://hg.openjdk.java.net/jmc/jmc/file/997060a24c42/core/org.openjdk.jmc.common/src/main/java/org/openjdk/jmc/common/util/MethodToolkit.java#l219
>
>
>
>
>
More information about the jmc-dev
mailing list