From efcbd2ba43fac6f8eff732f532fd6863f395d270 Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Oct 29 2012 14:45:21 +0000 Subject: Fix infinite loop in testsuite Resolves: #871067 upstream commit: ebaf32fcb8ebb922bcc4e28ad49fabe3de126e9e --- diff --git a/gc-7.2c-test-stack-infinite-loop.patch b/gc-7.2c-test-stack-infinite-loop.patch new file mode 100644 index 0000000..49a6046 --- /dev/null +++ b/gc-7.2c-test-stack-infinite-loop.patch @@ -0,0 +1,67 @@ +diff --git a/libatomic_ops/tests/test_atomic.c b/libatomic_ops/tests/test_atomic.c +index e354024..b8906e9 100644 +--- a/libatomic_ops/tests/test_atomic.c ++++ b/libatomic_ops/tests/test_atomic.c +@@ -77,7 +77,10 @@ void * acqrel_thr(void *id) + { + AO_t my_counter1; + if (me != 1) +- fprintf(stderr, "acqrel test: too many threads\n"); ++ { ++ fprintf(stderr, "acqrel test: too many threads\n"); ++ abort(); ++ } + my_counter1 = AO_load(&counter1); + AO_store(&counter1, my_counter1 + 1); + AO_store_release_write(&counter2, my_counter1 + 1); +diff --git a/libatomic_ops/tests/test_malloc.c b/libatomic_ops/tests/test_malloc.c +index a1f4179..a19ffd5 100644 +--- a/libatomic_ops/tests/test_malloc.c ++++ b/libatomic_ops/tests/test_malloc.c +@@ -151,6 +151,7 @@ void * run_one_test(void * arg) { + if (0 == p) { + # ifdef HAVE_MMAP + fprintf(stderr, "AO_malloc(%d) failed\n", LARGE_OBJ_SIZE); ++ abort(); + # else + fprintf(stderr, "AO_malloc(%d) failed: This is normal without mmap\n", + LARGE_OBJ_SIZE); +diff --git a/libatomic_ops/tests/test_stack.c b/libatomic_ops/tests/test_stack.c +index bf3180d..e654c35 100644 +--- a/libatomic_ops/tests/test_stack.c ++++ b/libatomic_ops/tests/test_stack.c +@@ -97,14 +97,23 @@ void check_list(int n) + p = (list_element *)AO_REAL_NEXT_PTR(p -> next)) + { + if (p -> data > n || p -> data <= 0) +- fprintf(stderr, "Found erroneous list element %d\n", p -> data); ++ { ++ fprintf(stderr, "Found erroneous list element %d\n", i); ++ abort(); ++ } + if (marks[p -> data] != 0) +- fprintf(stderr, "Found duplicate list element %d\n", p -> data); ++ { ++ fprintf(stderr, "Found duplicate list element %d\n", i); ++ abort(); ++ } + marks[p -> data] = 1; + } + for (i = 1; i <= n; ++i) + if (marks[i] != 1) +- fprintf(stderr, "Missing list element %d\n", i); ++ { ++ fprintf(stderr, "Missing list element %d\n", i); ++ abort(); ++ } + } + + volatile AO_t ops_performed = 0; +@@ -218,6 +227,7 @@ int main(int argc, char **argv) + int code; + if ((code = pthread_join(thread[i], 0)) != 0) { + fprintf(stderr, "Thread join failed %u\n", code); ++ abort(); + } + } + times[nthreads][exper_n] = (unsigned long)(get_msecs() - start_time); diff --git a/gc.spec b/gc.spec index 3d5227f..02bd548 100644 --- a/gc.spec +++ b/gc.spec @@ -2,12 +2,13 @@ Summary: A garbage collector for C and C++ Name: gc %global base_ver 7.2 Version: 7.2c -Release: 4%{?dist} +Release: 5%{?dist} Group: System Environment/Libraries License: BSD Url: http://www.hpl.hp.com/personal/Hans_Boehm/gc/ Source0: http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-%{version}%{?pre}.tar.gz +Patch1: gc-7.2c-test-stack-infinite-loop.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) ## upstreamable patches @@ -51,6 +52,7 @@ that involves minimum overhead across a variety of architectures. %prep %setup -q -n gc-%{base_ver}%{?pre} +%patch1 -p1 -b .infinite-loop-in-tests # refresh auto*/libtool to purge rpaths rm -f libtool libtool.m4 @@ -139,6 +141,9 @@ rm -rf %{buildroot} %changelog +* Mon Oct 29 2012 Pavel Raiskup - 7.2c-5 +- fix possible infinite loop in test suite (#871067) + * Mon Oct 29 2012 Pavel Raiskup - 7.2c-4 - trim lines, s/[tabs]/[spaces]/