Thread

Commits

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

  1. BUG #16666: Slight memory leak when running pg_ctl reload

    The Post Office <noreply@postgresql.org> — 2020-10-12T13:32:13Z

    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;
    }
    
    
  2. Re: BUG #16666: Slight memory leak when running pg_ctl reload

    Bruce Momjian <bruce@momjian.us> — 2020-10-12T14:19:38Z

    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
    
    
    
    
    
  3. Re: BUG #16666: Slight memory leak when running pg_ctl reload

    Tom Lane <tgl@sss.pgh.pa.us> — 2020-10-12T14:42:27Z

    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
    
    
    
    
  4. Re: BUG #16666: Slight memory leak when running pg_ctl reload

    Tom Lane <tgl@sss.pgh.pa.us> — 2020-10-12T17:37:51Z

    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