Aha! Thanks Tom! This will be my first time using valgrind, so I was unaware of trace-children, and getting it to attach to forked stuff was exactly where I thought the difficulty would lie. This is great, much appreciated! I’m suspecting that the leak might be coming from initStringInfo(), as I see a palloc() in there and no associated pfree() in my background worker’s code, but looking at the elog backend code, it looks like maybe you only have to explicitly free buf if you relocate it larger? -- Jon Erdman > On Feb 10, 2023, at 9:03 AM, Tom Lane <tgl@xxxxxxxxxxxxx> wrote: > > =?UTF-8?Q?Jon_Erdman?= <jon@xxxxxxxxxxxxxxxxxx> writes: >> I've got a background worker that has a slow memory leak in it >> somewhere. How can I get it to start under valgrind to get a memcheck >> output from it? > > You have to valgrind the whole cluster AFAIK. Basically, start > the postmaster under valgrind with --trace-children=yes. > For leak tracking you probably also want > --leak-check=full --track-origins=yes --read-var-info=yes > > regards, tom lane