JMC-6149: Distinguish by package with default packages in the traces does not work

Marcus Hirt marcus.hirt at
Mon Dec 3 15:40:10 UTC 2018

Looks good Alex!

Kind regards,

On 2018-12-03, 16:25, "jmc-dev on behalf of Alex Macdonald" <jmc-dev-bounces at on behalf of almacdon at> wrote:

    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
    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 [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:
    Before (image):
    Before (gif):
    After (image):
    After (gif):

More information about the jmc-dev mailing list