qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PULL 00/11] RCU, scsi, modules, icount changes for 201


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PULL 00/11] RCU, scsi, modules, icount changes for 2015-01-30
Date: Mon, 02 Feb 2015 15:55:54 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0


On 02/02/2015 15:36, Peter Maydell wrote:
> (Strictly speaking "local" isn't POSIX sh, but dash seems to cope
> with it, which is the major non-POSIX shell, and we have a couple
> of instances in configure already. Still, why do we need these
> variables to be local?)

Just for cleanliness; they aren't supposed to be used outside the function.

> Also some clang warnings:
>   CC    tests/rcutorture.o
> /Users/pm215/src/qemu/tests/rcutorture.c:260:13: warning: variable 'garbage' 
> is
>       uninitialized when used here [-Wuninitialized]
>             garbage++;
>             ^~~~~~~
> /Users/pm215/src/qemu/tests/rcutorture.c:244:25: note: initialize the variable
>       'garbage' to silence this warning
>     volatile int garbage;
>                         ^
>                          = 0
> 1 warning generated.

Fixed.

> And the rcutorture test seems to hang on OSX, or at least take way
> longer than anything we put in 'make check' ought to take.

It should only take 2-3 seconds.

Can you try this:

diff --git a/tests/rcutorture.c b/tests/rcutorture.c
index e94caf2..b17b4a6 100644
--- a/tests/rcutorture.c
+++ b/tests/rcutorture.c
@@ -168,7 +168,7 @@ static void perftestrun(int nthreads, int duration,
int nreaders, int nupdaters)
         g_usleep(1000);
     }
     goflag = GOFLAG_RUN;
-    sleep(duration);
+    g_usleep(duration * G_USEC_PER_SEC);
     goflag = GOFLAG_STOP;
     wait_all_threads();
     printf("n_reads: %lld  n_updates: %ld  nreaders: %d  nupdaters: %d
duration: %d\n",
@@ -344,7 +344,7 @@ static void stresstest(int nreaders, int duration)
         create_thread(rcu_fake_update_stress_test);
     }
     goflag = GOFLAG_RUN;
-    sleep(duration);
+    g_usleep(duration * G_USEC_PER_SEC);
     goflag = GOFLAG_STOP;
     wait_all_threads();
     printf("n_reads: %lld  n_updates: %ld  n_mberror: %d\n",
@@ -374,7 +374,7 @@ static void gtest_stress(int nreaders, int duration)
         create_thread(rcu_fake_update_stress_test);
     }
     goflag = GOFLAG_RUN;
-    sleep(duration);
+    g_usleep(duration * G_USEC_PER_SEC);
     goflag = GOFLAG_STOP;
     wait_all_threads();
     g_assert_cmpint(n_mberror, ==, 0);

(though I doubt it matters: tests/fdc-test uses sleep(3) already)
and if it still fails, catch a backtrace of all threads?

Thanks,

Paolo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]