[tex-k] tex/pdftex -recorder works incorrectly on parrallel TeX runs (race, breaks make -j)

Karl Berry karl at freefriends.org
Tue Mar 30 02:12:36 CEST 2010

I made the change below (this is web2c/lib/openclose.c), let me know if
problems.  I hope compilers won't give any guff about the cast and sprintf.


--- openclose.c (revision 17609)
+++ openclose.c (working copy)
@@ -37,12 +37,19 @@
 static void
-    /* Alas, while we might want to use mkstemp it is not portable.
-       So we have to be content with using a default name... */
+    /* Alas, while we'd like to use mkstemp it is not portable,
+       and doing the autoconfiscation (and providing fallbacks) is more
+       than we want to cope with.  So we have to be content with using a
+       default name.  Throw in the pid so at least parallel builds might
+       work (Debian bug 575731).  */
     string cwd;
+    pid_t pid = getpid();
+    char pid_str[MAX_INT_LENGTH];
+    sprintf (pid_str, "%ld", (long) pid);

     recorder_name = (string)xmalloc(strlen(kpse_program_name)+5);
     strcpy(recorder_name, kpse_program_name);
+    strcat(recorder_name, pid_str);
     strcat(recorder_name, ".fls");

     /* If an output directory was specified, use it instead of cwd.  */

More information about the tex-k mailing list