RFR (XXS): 8075288: malloc without free in VM_PopulateDumpSharedSpace::doit()

Thomas Stüfe thomas.stuefe at gmail.com
Wed May 6 13:24:11 UTC 2015


Hi,

Disclaimer: not a *r*eviewer.

The fix is simple and makes sense, even if it is not clear why saved_vtbl
is allocated. Would it in this case not make sense to at least fix the
memory leak?

Regards, Thomas


On Thu, Apr 30, 2015 at 4:35 PM, Jungwoo Ha <jwha at google.com> wrote:

> Can anyone approve this change?
>
> https://bugs.openjdk.java.net/browse/JDK-8075288
> http://cr.openjdk.java.net/~jwha/8075288/webrev.00
>
> Or at least tell me what to do.
>
> On Mon, Apr 20, 2015 at 5:23 PM, Jungwoo Ha <jwha at google.com> wrote:
>
> > Any update on this bug?
> > I think it is an obvious fix.
> >
> > On Fri, Apr 10, 2015 at 9:25 AM, Ioi Lam <ioi.lam at oracle.com> wrote:
> >
> >> There's this comment right above the code:
> >>
> >>   // dunno what this is for.
> >>
> >> I also don't understand why we need to allocate a saved_vtbl, clear
> >> vtbl_list, and then vtbl_list later.  I think I tried removing these
> lines
> >> in the past and got into problems. So I'd suggest leaving them alone
> until
> >> you understand what really is going on.
> >>
> >> Thanks
> >> - Ioi
> >>
> >>
> >> On 4/10/15 8:00 AM, Mikael Gerdin wrote:
> >>
> >>> PopulateDumpSharedSpace is CDS, redirecting to hotspot-runtime-dev at ...
> >>>
> >>> On 2015-04-10 16:49, Carsten Varming wrote:
> >>>
> >>>> Dear Jungwoo,
> >>>>
> >>>> Why is this array not resource allocated?
> >>>>
> >>>
> >>> Actually, none of this really matters since the VM terminates after
> >>> executing the CDS dump. This has probably been done to satisfy some
> static
> >>> analysis tool that Google runs on the sources.
> >>>
> >>> /Mikael
> >>>
> >>>
> >>>> Carsten
> >>>>
> >>>> On Fri, Apr 10, 2015 at 9:31 AM, Jungwoo Ha <jwha at google.com
> >>>> <mailto:jwha at google.com>> wrote:
> >>>>
> >>>>     What's the conclusion? Should I fix it or discuss it separately?
> >>>>
> >>>>     On Thu, Apr 9, 2015 at 2:43 PM, Kim Barrett <
> kim.barrett at oracle.com
> >>>>     <mailto:kim.barrett at oracle.com>> wrote:
> >>>>
> >>>>         On Apr 9, 2015, at 1:25 PM, Jungwoo Ha <jwha at google.com
> >>>>         <mailto:jwha at google.com>> wrote:
> >>>>          >
> >>>>          > Can someone sponsor this change?
> >>>>          >
> >>>>          > https://bugs.openjdk.java.net/browse/JDK-8075288
> >>>>          > http://cr.openjdk.java.net/~jwha/8075288/webrev.00
> >>>>
> >>>>         I think the change is correct.  Good find!
> >>>>
> >>>>         However, it’s not clear to me why this is using malloc (and
> now
> >>>>         free), rather than stack allocation.
> >>>>         The size is a declared variable at the allocation point, but
> >>>>         it’s initialized from a constant with a
> >>>>         not big value (17) and never modified, so could be changed to
> be
> >>>>         a constant.
> >>>>
> >>>>         That is, instead of
> >>>>
> >>>>           592   char* saved_vtbl = (char*)os::malloc(vtbl_list_size *
> >>>>         sizeof(void*), mtClass);
> >>>>           593   memmove(saved_vtbl, vtbl_list, vtbl_list_size *
> >>>>         sizeof(void*));
> >>>>
> >>>>         use
> >>>>
> >>>>            void* saved_vtbl[vtbl_list_size];
> >>>>            memmove(saved_vtbl, vtbl_list, ARRAY_SIZE(saved_vtbl));
> >>>>
> >>>>         Maybe the worry is that vtbl_list_size might not always be a
> >>>>         small constant?
> >>>>
> >>>>         Probably this question of whether to use malloc/free here at
> all
> >>>>         should be a separate CR.
> >>>>
> >>>>
> >>>>
> >>>>
> >>
> >
>


More information about the hotspot-runtime-dev mailing list