Re: Memory leak fix in rmtree.c
> On 6 Feb 2024, at 12:45, Ильясов Ян wrote: > > I agree with your argument. > Thank you for your time. Thank you for your report! -- Daniel Gustafsson
RE: Memory leak fix in rmtree.c
I agree with your argument. Thank you for your time. Kind regards, Ian Ilyasov Juniour Software Developer at Postgres Professional
Re: Memory leak fix in rmtree.c
> On 6 Feb 2024, at 11:21, Ильясов Ян wrote: > > > dirnames isn't allocated at this point, it's palloc'd after this return > > statement on line 67. > > I am sorry, I pointed on the wrong branch. I see that in master > it is really in line 67th , and the allocation goes well. But in > REL_16_STABLE the allocation is in line 58th and my patch is for this branch > only. Ok, that makes more sense. That was changed in commit f1e9f6bbfa53, and in the discussion for that patch it was deemed that no callers actually suffered from the leak as they were exiting (or erroring out) on error, so it was never back- patched. https://www.postgresql.org/message-id/flat/CAEudQAoN3-2ZKBALThnEk_q2hu8En5A0WG9O%2B5siJTQKVZzoWQ%40mail.gmail.com That still holds true today, so I don't see a big incentive to spend energy on backpatching that since it mainly serves to silence analyzers. Grepping for the pattern of allocating in the declaration doesn't reveal any other codepaths where the allocation leaks like this. -- Daniel Gustafsson
RE: Memory leak fix in rmtree.c
> dirnames isn't allocated at this point, it's palloc'd after this return > statement on line 67. > > -- > Daniel Gustafsson I am sorry, I pointed on the wrong branch. I see that in master it is really in line 67th , and the allocation goes well. But in REL_16_STABLE the allocation is in line 58th and my patch is for this branch only. Kind regards, Ian Ilyasov.
Re: Memory leak fix in rmtree.c
> On 6 Feb 2024, at 10:34, Ильясов Ян wrote: > Just like some of my colleagues I've been using Svace* > and I think I've found a bug in src/common/rmtree.c . > > In 64th line function returns false in case it couldn't open a directory, > but the memory, that have been allocated for char** dirnames is > not freed. dirnames isn't allocated at this point, it's palloc'd after this return statement on line 67. -- Daniel Gustafsson