This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug nptl/14232] New: tst-cancel7 and tst-cancelx7 race condition


http://sourceware.org/bugzilla/show_bug.cgi?id=14232

             Bug #: 14232
           Summary: tst-cancel7 and tst-cancelx7 race condition
           Product: glibc
           Version: 2.15
            Status: NEW
          Severity: normal
          Priority: P2
         Component: nptl
        AssignedTo: unassigned@sourceware.org
        ReportedBy: jsm28@gcc.gnu.org
                CC: drepper.fsp@gmail.com
    Classification: Unclassified


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);

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]