BUG #16666: Slight memory leak when running pg_ctl reload

Started by PG Bug reporting formover 5 years ago4 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 16666
Logged by: BoChen
Email address: bchen90@163.com
PostgreSQL version: 11.8
Operating system: SUSE Linux Enterprise Server 11 (x86_64)
Description:

I found slighting memory leakage occured when running pg_ctl reload command
for the following code segment(guc.c:6726-6740). When runing 'pg_ctl
reload', for these string type PGC_POSTMASTER GUC variables like
'unix_socket_directories', the following code segment will leak newval's
memery.

if (prohibitValueChange)
{
/* newval shouldn't be NULL, so we're a bit sloppy here */
if (*conf->variable == NULL || newval == NULL ||
strcmp(*conf->variable, newval) != 0)
{
record->status |= GUC_PENDING_RESTART;
ereport(elevel,
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
errmsg("parameter \"%s\" cannot be changed without restarting the
server",
name)));
return 0;
}
record->status &= ~GUC_PENDING_RESTART;
return -1;
}

#2Bruce Momjian
bruce@momjian.us
In reply to: PG Bug reporting form (#1)
Re: BUG #16666: Slight memory leak when running pg_ctl reload

On Mon, Oct 12, 2020 at 01:32:13PM +0000, PG Bug reporting form wrote:

The following bug has been logged on the website:

Bug reference: 16666
Logged by: BoChen
Email address: bchen90@163.com
PostgreSQL version: 11.8
Operating system: SUSE Linux Enterprise Server 11 (x86_64)
Description:

I found slighting memory leakage occured when running pg_ctl reload command
for the following code segment(guc.c:6726-6740). When runing 'pg_ctl
reload', for these string type PGC_POSTMASTER GUC variables like
'unix_socket_directories', the following code segment will leak newval's
memery.

Uh, you are saying pg_ctl leaks memory or the database server leaks
memory? I don't see any memory allocation in the code you posted.

--
Bruce Momjian <bruce@momjian.us> https://momjian.us
EnterpriseDB https://enterprisedb.com

The usefulness of a cup is in its emptiness, Bruce Lee

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#2)
Re: BUG #16666: Slight memory leak when running pg_ctl reload

Bruce Momjian <bruce@momjian.us> writes:

Uh, you are saying pg_ctl leaks memory or the database server leaks
memory? I don't see any memory allocation in the code you posted.

I've not looked at the code yet, but I think the OP is worried that
we need to free(newval) before these "return"s.

regards, tom lane

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: PG Bug reporting form (#1)
Re: BUG #16666: Slight memory leak when running pg_ctl reload

PG Bug reporting form <noreply@postgresql.org> writes:

I found slighting memory leakage occured when running pg_ctl reload command
for the following code segment(guc.c:6726-6740). When runing 'pg_ctl
reload', for these string type PGC_POSTMASTER GUC variables like
'unix_socket_directories', the following code segment will leak newval's
memery.

Yeah, you're right. If there's a "newextra" chunk, that'll get
leaked too.

Even counting that, it's not very plausible that one would SIGHUP a
server often enough that the bloat would become obvious, since these
values typically aren't very large. But it's clearly a bug.

Patch applied, thanks for the report!

regards, tom lane