On 2024-04-07 Su 20:58, Tom Lane wrote:
Coverity complained that this patch leaks memory:
/srv/coverity/git/pgsql-git/postgresql/src/bin/pg_combinebackup/load_manifest.c:
212 in load_backup_manifest()
206 bytes_left -= rc;
207 json_parse_manifest_incremental_chunk(
208
inc_state, buffer, rc, bytes_left == 0);
209 }
210
211 close(fd);
CID 1596259: (RESOURCE_LEAK)
Variable "inc_state" going out of scope leaks the storage it points to.
212 }
213
214 /* All done. */
215 pfree(buffer);
216 return result;
217 }
/srv/coverity/git/pgsql-git/postgresql/src/bin/pg_verifybackup/pg_verifybackup.c:
488 in parse_manifest_file()
482 bytes_left -= rc;
483 json_parse_manifest_incremental_chunk(
484
inc_state, buffer, rc, bytes_left == 0);
485 }
486
487 close(fd);
CID 1596257: (RESOURCE_LEAK)
Variable "inc_state" going out of scope leaks the storage it points to.
488 }
489
490 /* Done with the buffer. */
491 pfree(buffer);
492
493 return result;
It's right about that AFAICS, and not only is the "inc_state" itself
leaked but so is its assorted infrastructure. Perhaps we don't care
too much about that in the existing applications, but ISTM that
isn't going to be a tenable assumption across the board. Shouldn't
there be a "json_parse_manifest_incremental_shutdown()" or the like
to deallocate all the storage allocated by the parser?
yeah, probably. Will work on it.
cheers
andrew
--
Andrew Dunstan
EDB: https://www.enterprisedb.com