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

Marcus Hirt marcus at
Tue Dec 4 10:32:04 UTC 2018

Trying that again. Heh.

Hi Mario,

Agreed. That said, there is probably a difference in how to render a stand alone 
default package in a human readable way, and what the core API itself returns. 
The API needs to return a valid package name, possibly the empty string (or 
null) for the default package. When we _render_ the default package, it depends 
on the context how we probably want to render. As part of a FQN, it should be 
the empty string. As a stand alone package only rendering in the 
StackTrace-view, when grouping on package, possibly something like <default>, 
to underline that there is a package and not a missing data error.

Kind regards,

-----Ursprungligt meddelande-----
Från: jmc-dev <jmc-dev-bounces at> För Mario Torre
Skickat: den 4 december 2018 08:47
Till: Alex Macdonald <almacdon at>
Kopia: jmc-dev at
Ämne: Re: JMC-6149: Distinguish by package with default packages in the traces does not work

Hi Alex,

I pushed the fix.

While checking it out, I thought it would be nice to use a different indication for the default package, "null" sounds weird, especially since the package name isn't really "null", at most an empty string.

Do you think we can follow up this fix with some other string, perhaps something like "Default Package"? Marcus, do you think this is a good idea?

On Mon, Dec 3, 2018 at 8:59 PM Alex Macdonald <almacdon at> wrote:
> Hi Marcus,
> On Mon, Dec 3, 2018 at 10:40 AM Marcus Hirt <marcus.hirt at> 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 on behalf of almacdon at> 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 [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):
>>     Thoughts?
>>     Cheers,
>>     Alex
>>     [0]
>>     [1]
>>     [2]
>>     [3]
>>     [4]
>>     [5]
>>     [6]
>>     [7]
>>     [8]
>> .jmc.common/src/main/java/org/openjdk/jmc/common/util/MethodToolkit.j
>> ava#l219

Mario Torre
Associate Manager, Software Engineering
Red Hat GmbH <>
9704 A60C B4BE A8B8 0F30  9205 5D7E 4952 3F65 7898

More information about the jmc-dev mailing list