Paul Eggert wrote: > On 12/12/2010 07:41 AM, Jim Meyering wrote: >> That sounds good, assuming it triggers the bug reliably for you. >> I was hoping to find a way to reproduce it without relying on gensort, >> but won't object if you want to do that. > > In my attempts to reproduce the problem, it's pretty flaky. > I think it depends on how busy the operating system is. > Sometimes I'd get failures all the time; sometimes, almost > never. (This was with valgrind; I had much less luck without > valgrind.) > > Anyway, I pushed this, which seemed to work well enough > on my host. It prefers gensort if available, but falls > back on seq+shuf if not. > > Subject: [PATCH] tests: test for access to stale thread memory > > * tests/misc/sort-stale-thread-mem: New tests. > * tests/Makefile.am (TESTS): Add it.
Thank you! I did this, too: >From 8351407f874ab3d6fc0830e78a6c234bf1583e3f Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyer...@redhat.com> Date: Mon, 13 Dec 2010 08:07:25 +0100 Subject: [PATCH 1/2] tests: mark new test as very expensive * tests/misc/sort-stale-thread-mem: Don't initialize fail=0 here; that is done in init.sh. This avoids a syntax-check failure. Invoke "Exit $fail" at end, too. Mark as a very expensive test. --- tests/misc/sort-stale-thread-mem | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/misc/sort-stale-thread-mem b/tests/misc/sort-stale-thread-mem index c4f4fcb..8ad60ed 100755 --- a/tests/misc/sort-stale-thread-mem +++ b/tests/misc/sort-stale-thread-mem @@ -21,7 +21,7 @@ . "${srcdir=.}/init.sh"; path_prepend_ ../src print_ver_ sort -expensive_ +very_expensive_ valgrind --help >/dev/null || skip_ "requires valgrind" test "$(nproc)" = 1 && skip_ "requires a multi-core system" @@ -36,9 +36,10 @@ test "$(nproc)" = 1 && skip_ "requires a multi-core system" # on some circa-2010 multicore Linux platforms. Run the test 10 times # so that the probability of missing the bug should be about 1 in # 2**100 on these hosts. -fail=0 for i in $(seq 100); do valgrind --quiet --error-exitcode=3 \ sort -S 100K --parallel=2 in > /dev/null || { fail=$?; echo iteration $i failed; Exit $fail; } done + +Exit $fail -- 1.7.3.3.38.gc6d05 >From 0c70708db7ed32d2b379116dc6bf64f07539aaf1 Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyer...@redhat.com> Date: Mon, 13 Dec 2010 08:19:12 +0100 Subject: [PATCH 2/2] tests: tweak basic-1 to use warn_ rather than literal "exit 77" * tests/install/basic-1 (just_built_dd): Use warn_, rather than cat and exit 77. --- tests/install/basic-1 | 24 ++++++------------------ 1 files changed, 6 insertions(+), 18 deletions(-) diff --git a/tests/install/basic-1 b/tests/install/basic-1 index 5e07bab..3c45c2a 100755 --- a/tests/install/basic-1 +++ b/tests/install/basic-1 @@ -39,28 +39,16 @@ dd2=dd2$EXEEXT just_built_dd=$abs_top_builddir/src/$dd -test -r "$just_built_dd" || \ - { - cat 1>&2 <<EOF -$0: WARNING!!! -Your just-built dd binary, $just_built_dd -is not readable, so skipping the remaining tests in this file. -EOF - exit 77 - } +test -r "$just_built_dd" \ + || warn_ "WARNING!!! Your just-built dd binary, $just_built_dd +is not readable, so skipping the remaining tests in this file." cp "$just_built_dd" . || fail=1 cp $dd $dd2 || fail=1 -strip $dd2 || \ - { - cat 1>&2 <<EOF -$0: WARNING!!! -Your strip command doesn't seem to work, so skipping -the test of install's --strip option. -EOF - exit 77 - } +strip $dd2 \ + || warn_ "WARNING!!! Your strip command doesn't seem to work, +so skipping the test of install's --strip option." # This test would fail with 3.16s when using versions of strip that # don't work on read-only files (the one from binutils works fine). -- 1.7.3.3.38.gc6d05