> While building something on top of a GNAT-compiled library, I noticed that
> repeatedly generating symbolic tracebacks led to a memory leak in my
> program. I tracked this down to a missing close in libgnat, which I've
> attempted to fix with the attached patch.

Thanks for catching this.

> I validated this fix locally with valgrind, as it wasn’t clear to me how to
> add a test for this.

I agree that there is no convenient way to test this.

> Close C.Line_Str with the other debug streams, before closing the object
> file. An absent section needs no extra guard: its region starts null and
> System.Mmap.Free already accepts null.

Yes, but this reasoning breaks privacy since Mapped_Stream is a private type, 
so I think that the logic of Close should match that of Open.  You could for 
example add a Has_Line_Str boolean component to Dwarf_Context and test it.

-- 
Eric Botcazou


Reply via email to