BUG #16666: Slight memory leak when running pg_ctl reload

The Post Office <noreply@postgresql.org>

From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: bchen90@163.com
Date: 2020-10-12T13:32:13Z
Lists: pgsql-bugs
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;
}

Commits

  1. Fix memory leak when guc.c decides a setting can't be applied now.