From owner-cvs-src@FreeBSD.ORG Mon Dec 17 20:53:01 2007 Return-Path: Delivered-To: cvs-src@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 098AD16A417; Mon, 17 Dec 2007 20:53:01 +0000 (UTC) (envelope-from bright@elvis.mu.org) Received: from elvis.mu.org (elvis.mu.org [192.203.228.196]) by mx1.freebsd.org (Postfix) with ESMTP id 00D8A13C45A; Mon, 17 Dec 2007 20:53:00 +0000 (UTC) (envelope-from bright@elvis.mu.org) Received: by elvis.mu.org (Postfix, from userid 1192) id 9F1B71A4D7C; Mon, 17 Dec 2007 12:51:50 -0800 (PST) Date: Mon, 17 Dec 2007 12:51:50 -0800 From: Alfred Perlstein To: Diomidis Spinellis Message-ID: <20071217205150.GH16982@elvis.mu.org> References: <200712161747.lBGHlYk9093518@repoman.freebsd.org> <20071217062046.GE16982@elvis.mu.org> <47663BE3.6050401@aueb.gr> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <47663BE3.6050401@aueb.gr> User-Agent: Mutt/1.4.2.3i Cc: cvs-src@FreeBSD.ORG, src-committers@FreeBSD.ORG, Diomidis Spinellis , cvs-all@FreeBSD.ORG Subject: Re: cvs commit: src/bin/mv mv.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Dec 2007 20:53:01 -0000 * Diomidis Spinellis [071217 01:04] wrote: > Alfred Perlstein wrote: > >* Diomidis Spinellis [071216 09:47] wrote: > >>dds 2007-12-16 17:47:34 UTC > >> > >> FreeBSD src repository > >> > >> Modified files: > >> bin/mv mv.c > >> Log: > >> Eliminate gcc "variable clobbered" warnings by declaring the variables > >> living across the vfork as volatile. > >> > >> Noted by: kan > >> > >> Revision Changes Path > >> 1.48 +2 -1 src/bin/mv/mv.c > > > >I'm pretty sure that calling warn(3) under vfork() is not allowed > >as it can clobber stdio state. > > > >To fix this, have the parent catch a return value from the child > >and emit the warning. > > This has been there since (at least) 1994, but you're absolutely right. ...while you're there. :) > POSIX states: "[...] the behavior is undefined if the process created > by vfork() either modifies any data other than a variable of type pid_t > used to store the return value from vfork(), or returns from the > function in which vfork() was called, or calls any other function before > successfully calling _exit() or one of the exec family of functions." Yes, this is correct. > > I've fixed it in the way you suggested. Thank you very much. -Alfred