The test nptl/tst-cancel7 (and so tst-cancelx7) has a race condition that can cause failures with "could not read pid" in tst-cancel7.out. Suppose the function sl waits a while between opening the output file and writing to it. Then cancellation of that thread takes effect without the output having been written and flushed. This can be reproduced reliably on x86_64 by inserting a delay loop, e.g.: diff --git a/nptl/tst-cancel7.c b/nptl/tst-cancel7.c index 0a972e6..efe46ef 100644 --- a/nptl/tst-cancel7.c +++ b/nptl/tst-cancel7.c @@ -42,6 +42,7 @@ tf (void *arg) return NULL; } +volatile unsigned long long ll = 0; static void sl (void) @@ -50,6 +51,9 @@ sl (void) if (f == NULL) exit (1); + for (ll = 0; ll < (1ULL << 34); ll++) + ; + fprintf (f, "%lld\n", (long long) getpid ()); fflush (f);
Fixed on 2.35.