Re: pgsql: Fix race condition in pg_ctl reading postmaster.pid. - Mailing list pgsql-committers

From Tom Lane
Subject Re: pgsql: Fix race condition in pg_ctl reading postmaster.pid.
Date
Msg-id 8435.1350309939@sss.pgh.pa.us
Whole thread Raw
In response to pgsql: Fix race condition in pg_ctl reading postmaster.pid.  (Heikki Linnakangas <heikki.linnakangas@iki.fi>)
Responses Re: pgsql: Fix race condition in pg_ctl reading postmaster.pid.
List pgsql-committers
Heikki Linnakangas <heikki.linnakangas@iki.fi> writes:
> Fix race condition in pg_ctl reading postmaster.pid.
> If postmaster changed postmaster.pid while pg_ctl was reading it, pg_ctl
> could overrun the buffer it allocated for the file. Fix by reading the
> whole file to memory with one read() call.

Maybe I'm just not awake enough, but that code doesn't look to me like
it does the right thing with a non-newline-terminated file.  Doesn't it
drop the last character of the last line?

Given the way that pg_ctl uses the file, I think that the old logic of
"pretend the file ends with a newline" is wrong anyway.  If we do manage
to see an intermediate state of the file, it would be better to not
return the last line at all than to return a truncated (a/k/a wrong)
value for that line.  So I'd vote to rejigger the logic to ignore any
data after the last newline.

            regards, tom lane


pgsql-committers by date:

Previous
From: Heikki Linnakangas
Date:
Subject: pgsql: Fix typo in comment.
Next
From: Heikki Linnakangas
Date:
Subject: Re: pgsql: Fix race condition in pg_ctl reading postmaster.pid.