[mpich-discuss] [PATCH] Issue 5486: Nobody checks the return code from "MTest_Start_thread()".
Dave Goodell
goodell at mcs.anl.gov
Fri May 22 08:44:59 CDT 2009
Hi Joe,
Thanks for the patch. The idea is a good one, although I think I'll
tweak it a little bit when I commit this to the trunk. Just minor
stuff like abort() --> MPI_Abort(...) and slightly different bracing.
Also, we obviously can't disable the new multisend tests in general,
so you'll probably just have to keep that hunk in your branches.
I'll work something up later today and let you know when I've
committed it.
Thanks again,
-Dave
On May 21, 2009, at 4:39 PM, Joe Ratterman wrote:
> From: Joe Ratterman <jratt at us.ibm.com>
>
> BGP has a maximum of 3 threads that can be created (SMP mode), but
> sometimes only 1 (DUAL mode). Because some tests try to create more
> than 3 threads, pthread_create() will fail. However, nobody checks
> that, so the tests time-out.
>
> This adds an abort: if something absolutely *must* happen, you cannot
> let it silently fail.
> ---
> mpich2/test/mpi/threads/pt2pt/testlist | 6 +++---
> mpich2/test/mpi/threads/util/mtestthread.c | 9 +++++++--
> 2 files changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/mpich2/test/mpi/threads/pt2pt/testlist b/mpich2/test/
> mpi/threads/pt2pt/testlist
> index d62e8c7..c53b354 100644
> --- a/mpich2/test/mpi/threads/pt2pt/testlist
> +++ b/mpich2/test/mpi/threads/pt2pt/testlist
> @@ -2,8 +2,8 @@ threaded_sr 2
> alltoall 4
> sendselfth 1
> multisend 2
> -multisend2 5
> -multisend3 5
> -multisend4 5
> +# multisend2 5 # This test uses too many threads
> +# multisend3 5 # This test uses too many threads
> +# multisend4 5 # This test uses too many threads
> greq_wait 1
> greq_test 1
> diff --git a/mpich2/test/mpi/threads/util/mtestthread.c b/mpich2/
> test/mpi/threads/util/mtestthread.c
> index b171785..af01643 100644
> --- a/mpich2/test/mpi/threads/util/mtestthread.c
> +++ b/mpich2/test/mpi/threads/util/mtestthread.c
> @@ -60,7 +60,6 @@ int MTest_Join_threads( void ){
> int MTest_Start_thread(MTEST_THREAD_RETURN_TYPE (*fn)(void *p),void
> *arg)
> {
> int err;
> - pthread_t thread;
> pthread_attr_t attr;
> pthread_attr_init(&attr);
> pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
> @@ -71,7 +70,13 @@ int MTest_Start_thread(MTEST_THREAD_RETURN_TYPE
> (*fn)(void *p),void *arg)
> return 1;
> }
> err = pthread_create(threads+nthreads, &attr, fn, arg);
> - if (!err) nthreads++;
> + if (!err)
> + nthreads++;
> + else
> + {
> + fprintf(stderr, "Failed to create thread calling func %p
> with arg %p\n", fn, arg);
> + abort();
> + }
> pthread_attr_destroy(&attr);
> return err;
> }
> --
> 1.6.3.2.gbfc07d5
>
More information about the mpich-discuss
mailing list