digitalmars.D.bugs - [Issue 4396] New: mkdir race prevents concurrent compiling with DMD using make -j
- d-bugmail puremagic.com (50/50) Jun 27 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4396
- d-bugmail puremagic.com (12/12) Jun 29 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4396
- d-bugmail puremagic.com (6/6) Jun 29 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4396
- d-bugmail puremagic.com (12/12) Jul 01 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4396
- d-bugmail puremagic.com (11/11) Jul 01 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4396
http://d.puremagic.com/issues/show_bug.cgi?id=4396 Summary: mkdir race prevents concurrent compiling with DMD using make -j Product: D Version: D1 & D2 Platform: All OS/Version: All Status: NEW Keywords: patch Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: llucax gmail.com PDT --- Since DMD creates directories as needed, when using make -j to compile some modules concurrently, if 2 modules lives in the same directory, that directory doesn't exist and both are compiled at the same time, there are times where this set of steps are performed: 1) dmd m1.d checks if dstdir exist (it doesn't) 2) dmd m2.d checks if dstdir exist (it doesn't) 3) dmd m1.d creates dstdir successfully 4) dmd m2.d tries to create dstdir but it fails because dmd m1.d already created it. Here is a simple patch. Created against D1 svn but I guess it will apply to D2 cleanly also. --- diff --git a/src/root/root.c b/src/root/root.c index 3d491a4..9df951c 100644 --- a/src/root/root.c +++ b/src/root/root.c -957,7 +957,10 void FileName::ensurePathExists(const char *path) #if POSIX if (mkdir(path, 0777)) #endif - error("cannot create directory %s", path); + { + if (errno != EEXIST) + error("cannot create directory %s", path); + } } } } --- I'm not sure how the mkdir() API for windows behaves regarding errno, I couldn't find any reference of mkdir() for windows. Adding a strerror() to the error message could be useful too. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 27 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4396 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzilla digitalmars.com Resolution| |FIXED 09:33:25 PDT --- http://www.dsource.org/projects/dmd/changeset/568 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 29 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4396 PDT --- Thanks! -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 29 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4396 Gide Nwawudu <gide nwawudu.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED CC| |gide nwawudu.com Resolution|FIXED | Commit 569 reverted the change. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 01 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4396 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|REOPENED |RESOLVED Resolution| |FIXED 10:57:31 PDT --- http://www.dsource.org/projects/dmd/changeset/570 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 01 2010