Memory leak in libxml2 (was Re: [PATCH] Add pretty-printed XML output option)
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Jim Jones <jim.jones@uni-muenster.de>
Cc: Peter Smith <smithpb2250@gmail.com>,
Peter Eisentraut <peter.eisentraut@enterprisedb.com>,
Nikolay Samokhvalov <samokhvalov@gmail.com>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Andrey Borodin <amborodin86@gmail.com>
Date: 2023-03-15T21:38:37Z
Lists: pgsql-hackers
I wrote: > 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? After a bit of further testing: the leak is present in libxml2 2.9.7 which is what I have on this RHEL8 box, but it seems not to occur in libxml2 2.10.3 (tested on Fedora 37, and I verified that Fedora isn't carrying any relevant local patch). So maybe it's worth working around that, or maybe it isn't. regards, tom lane
Commits
-
Fix memory leak in XMLSERIALIZE(... INDENT).
- f24605e2dc16 18.0 landed
- ee58de10084b 16.10 landed
- 20bae0690322 17.6 landed
-
doc: Move documentation of md5_password_warnings to a better place
- f3622b64762b 18.0 cited
-
Support [NO] INDENT option in XMLSERIALIZE().
- 483bdb2afec9 16.0 landed
-
Add an expected-file to match behavior of latest libxml2.
- 085423e3e326 9.6.0 cited