On 18 August 2015 at 21:17, Tom Lane <t...@sss.pgh.pa.us> wrote: > Joel Rosdahl <j...@rosdahl.net> writes: >> Tom Lane <t...@sss.pgh.pa.us> wrote: >>> Actually, that's a bug not just a cosmetic problem, because it introduces >>> a race condition. > >> Yes, sounds like a race condition that could happen. >> I just pushed this change as a fix: >> https://git.samba.org/?p=ccache.git;a=commitdiff;h=4fdb9580fedac9669508bef0837f46f1e9310e24. >> Opinions on it are welcome. > > Hm. In principle there are still race conditions here: consider what > happens if the SIGINT is received between fork() and storing the PID > into *pid, or after waitpid() and before clearing *pid.
FWIW the current signal handler is not fully safe. In particular, it modifies variables which are not volatile sig_atomic_t (see section 220.127.116.11 of the C11 standard for more details). The call to unlink() is safe per POSIX but is not safe according to strict C semantics (see http://pubs.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html). Similarly, _Exit is required by C, though _exit is safe per POSIX. -- Eitan Adler _______________________________________________ ccache mailing list firstname.lastname@example.org https://lists.samba.org/mailman/listinfo/ccache