Re: Fwd: race in pg_ctl start -w

From: Heikki Linnakangas <hlinnakangas(at)vmware(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Pg Bugs <pgsql-bugs(at)postgresql(dot)org>, Dave Vitek <dvitek(at)grammatech(dot)com>
Subject: Re: Fwd: race in pg_ctl start -w
Date: 2012-10-15 08:06:26
Message-ID: 507BC402.40807@vmware.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On 11.10.2012 22:36, Tom Lane wrote:
> Heikki Linnakangas<hlinnakangas(at)vmware(dot)com> writes:
>> Hmm, starting with 9.3, postmaster can not only create and append to the
>> end of file, it can also inject a line in the middle, shifting the
>> following lines forwards. In theory, if a new line is injected into the
>> middle of the file between fgets() calls, readfile() could read part of
>> the same line twice. Not sure what consequences that could have; pg_ctl
>> might try to connect to wrong address or socket directory.
>
> Hm. IIRC, the postmaster is careful to write the whole thing in a
> single write() call, which in principle is atomic. Perhaps you're
> right that we'd better have pg_ctl read it in a single read() to
> ensure that it sees a consistent file state. Otherwise we're making
> assumptions about what sort of buffering underlies the stdio functions.

Ok, changed it to slurp the whole file to memory with one read() call.

Dave, did this silence the static analysis tool you used?

- Heikki

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Michał Hankiewicz 2012-10-15 08:17:44 Re: BUG #7600: Database crash with data corruption
Previous Message Craig Ringer 2012-10-15 02:54:55 Re: BUG #7595: terminate process in an unusual way