[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.2b1-88-g8f6b3cb
Service Account
noreply at mpich.org
Mon Apr 20 23:10:11 CDT 2015
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, master has been updated
via 8f6b3cbb1f3a8a6f2202dbcff32fd76d7de7aa05 (commit)
from a56826750cc7b99150b9b59e602dcaf13cb5f661 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/8f6b3cbb1f3a8a6f2202dbcff32fd76d7de7aa05
commit 8f6b3cbb1f3a8a6f2202dbcff32fd76d7de7aa05
Author: Min Si <msi at il.is.s.u-tokyo.ac.jp>
Date: Mon Apr 20 20:29:39 2015 -0500
A workaround for FreeBSD pthread mallc/free bug.
On FreeBSD, test threads/pt2pt/multisend4 sometimes reports the segfault
error when calling free function. This error only happens when the
buffer size is equal to 4M bytes and every thread performs malloc/free
for multiple times. This bug can be reproduced by using simple memcpy
without MPI communication, thus it is considered not as a MPI bug but a
bug of the thread-safe memory allocation on FreeBSD. A workaround of
this bug is to move malloc-free outside the loop to avoid frequent
malloc-free calls. This patch added it.
Signed-off-by: Huiwei Lu <huiweilu at mcs.anl.gov>
diff --git a/test/mpi/threads/pt2pt/multisend4.c b/test/mpi/threads/pt2pt/multisend4.c
index 041e6af..9b2f07b 100644
--- a/test/mpi/threads/pt2pt/multisend4.c
+++ b/test/mpi/threads/pt2pt/multisend4.c
@@ -44,9 +44,9 @@ MTEST_THREAD_RETURN_TYPE run_test_sendrecv(void *arg)
fprintf( stderr, "Panic wsize = %d nthreads = %d\n",
wsize, nthreads );
- for (cnt=1; cnt < MAX_CNT; cnt = 2*cnt) {
- buf = (int *)malloc( 2*cnt * sizeof(int) );
+ buf = (int *) malloc(2 * MAX_CNT * sizeof(int));
+ for (cnt=1; cnt < MAX_CNT; cnt = 2*cnt) {
/* Wait for all senders to be ready */
MTest_thread_barrier(nthreads);
@@ -72,10 +72,11 @@ MTEST_THREAD_RETURN_TYPE run_test_sendrecv(void *arg)
t = MPI_Wtime() - t;
/* can't free the buffers until the requests are completed */
MTest_thread_barrier(nthreads);
- free( buf );
if (thread_num == 1)
MTestPrintfMsg( 1, "buf size %d: time %f\n", cnt, t / MAX_LOOP );
}
+
+ free(buf);
return (MTEST_THREAD_RETURN_TYPE)NULL;
}
-----------------------------------------------------------------------
Summary of changes:
test/mpi/threads/pt2pt/multisend4.c | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
hooks/post-receive
--
MPICH primary repository
More information about the commits
mailing list