X-Spam-Check-By: sourceware.org To: cygwin AT cygwin DOT com From: Rolf Campbell Subject: Re: coreutils 5.97; mkdir -p; mkdir: cannot create directory `name': File exists Date: Tue, 22 Aug 2006 16:23:52 -0400 Lines: 24 Message-ID: References: <44EB471A DOT 3080400 AT Sun DOT COM> <44EB51D5 DOT 5060900 AT byu DOT net> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit User-Agent: Thunderbird 3.0a1 (Windows/20060822) In-Reply-To: <44EB51D5.5060900@byu.net> X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Eric Blake wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > From: Rolf Campbell >> I believe there is a race-condition in "mkdir -p". Specifically, if the >> directory does not exist *yet* when stat is called on line #98 of >> "coreutils-5.97/lib/mkdir-p.c", but the directory *does* exist by the >> time line #190 of the same file calls mkdir(), then the program will >> error with "File exists". >> >> I hit this occasionally when doing parallel builds. > > Are you sure you have the right line numbers? The cygwin version of > lib/mkdir-p.c is patched in coreutils-5.97-1; but even the upstream > version takes great pains that this is not a race - yes, the directory can > be created between the time it is statted and the mkdir, but the mkdir > takes this into account by trying to chdir into the directory on failure, > before giving up with an error message to the user that the file exists. > > I will need a stronger argument to believe that there is a race, in which > case, the upstream maintainers would probably like to hear it too. Oops, after closer inspection, the problem was with my makefile. *sigh* -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/