]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Try to fix, or at least avoid if possible, some arbitrary delays at
authorJulian Seward <jseward@acm.org>
Sun, 18 Nov 2007 01:16:52 +0000 (01:16 +0000)
committerJulian Seward <jseward@acm.org>
Sun, 18 Nov 2007 01:16:52 +0000 (01:16 +0000)
thread creation time observed when running on POWER5 64-bit Linux.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7179

helgrind/hg_intercepts.c

index 6a0baba66b847c6150b999453fae745d7deb1dac..14a0fc63e02ab80f57305504e431995819ed0e88 100644 (file)
@@ -216,8 +216,13 @@ PTH_FUNC(int, pthreadZucreateZAZa, // pthread_create@*
       /* we have to wait for the child to notify the tool of its
          pthread_t before continuing */
       while (xargs[2] != 0) {
-         // FIXME: add a yield client request
-         /* do nothing */
+         /* Do nothing.  We need to spin until the child writes to
+            xargs[2].  However, that can lead to starvation in the
+            child and very long delays (eg, tc19_shadowmem on
+            ppc64-linux Fedora Core 6).  So yield the cpu if we can,
+            to let the child run at the earliest available
+            opportunity. */
+         sched_yield();
       }
    } else { 
       DO_PthAPIerror( "pthread_create", ret );