On 15.03.23 22:13, Tom Lane wrote:
I wrote:
It occurred to me to test v23 for memory leaks, and it had bad ones:
* the "newline" node used in the CONTENT case never got freed.
Making another one for each line wasn't helping, either.
Oh, I did really miss that one. Thanks!
Pushed with those changes and some other cosmetic cleanup.
Thanks for working so hard on this!
Great! Thank you, Peter and Andrey for the very nice reviews.
BTW, the libxml leak problem seems to extend to other cases too.
I tested with code like

do $$
declare x xml; t text;
begin
x := '<?xml version="1.0" encoding="utf8"?><foo><bar><val>73</val></bar></foo>';
for i in 1..10000000 loop
   t := xmlserialize(document x as text);
end loop;
raise notice 't = %', t;
end;
$$;

That case is fine, but if you change the encoding spec to "latin1",
it leaks like mad.  That problem is not the fault of this patch,
I don't think.  I wonder if we need to do something to prevent
libxml from seeing encoding declarations other than utf8?

In my environment (libxml2 v2.9.10 and Ubuntu 22.04) I couldn't reproduce this memory leak. It's been most likely fixed in further libxml2 versions. Unfortunately their gitlab page has no release notes from versions prior to 2.9.13 :(

Best, Jim



Reply via email to