From 7ac88e383150ef3722bc58c541f261528bc25d22 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Tue, 27 Mar 2012 14:25:55 -0700 Subject: [PATCH] Fix nptl/tst-cond1{6,7,8}.c on 32-bit with many cpus. * tst-cond16.c (do_test): Use a thread stack size which is either PTHREAD_STACK_MIN or the page size, whichever is larger. * tst-cond18.c (do_test): Likewise. --- nptl/ChangeLog | 6 ++++++ nptl/tst-cond16.c | 10 ++++++++-- nptl/tst-cond18.c | 10 ++++++++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/nptl/ChangeLog b/nptl/ChangeLog index ad345f9505..4622393a4f 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,9 @@ +2012-03-27 David S. Miller + + * tst-cond16.c (do_test): Use a thread stack size which is either + PTHREAD_STACK_MIN or the page size, whichever is larger. + * tst-cond18.c (do_test): Likewise. + 2012-03-19 H.J. Lu * sysdeps/x86_64/pthreaddef.h (CURRENT_STACK_FRAME): Use diff --git a/nptl/tst-cond16.c b/nptl/tst-cond16.c index 44b98634b1..8a35d953cc 100644 --- a/nptl/tst-cond16.c +++ b/nptl/tst-cond16.c @@ -76,9 +76,15 @@ do_test (void) count *= 4; pthread_t th[count]; - int i, ret; + pthread_attr_t attr; + int i, ret, sz; + pthread_attr_init (&attr); + sz = __getpagesize (); + if (sz < PTHREAD_STACK_MIN) + sz = PTHREAD_STACK_MIN; + pthread_attr_setstacksize (&attr, sz); for (i = 0; i < count; ++i) - if ((ret = pthread_create (&th[i], NULL, tf, NULL)) != 0) + if ((ret = pthread_create (&th[i], &attr, tf, NULL)) != 0) { errno = ret; printf ("pthread_create %d failed: %m\n", i); diff --git a/nptl/tst-cond18.c b/nptl/tst-cond18.c index a1bb947ac4..264c93238b 100644 --- a/nptl/tst-cond18.c +++ b/nptl/tst-cond18.c @@ -87,10 +87,16 @@ do_test (void) count *= 8; pthread_t th[count + 1]; - int i, ret; + pthread_attr_t attr; + int i, ret, sz; + pthread_attr_init (&attr); + sz = __getpagesize (); + if (sz < PTHREAD_STACK_MIN) + sz = PTHREAD_STACK_MIN; + pthread_attr_setstacksize (&attr, sz); for (i = 0; i <= count; ++i) - if ((ret = pthread_create (&th[i], NULL, tf, (void *) (long) i)) != 0) + if ((ret = pthread_create (&th[i], &attr, tf, (void *) (long) i)) != 0) { errno = ret; printf ("pthread_create %d failed: %m\n", i);