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