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 62f750cca300118d22a4ba2d77968343b0acfd53 (commit) via aaf2fd8548a58f7ff5ca3c9092f48ad9a766d2e5 (commit) via aeb114962d94292260dd5e8e48f3d1818d15aa78 (commit) from 378afdc73a87e95a8c94d5da003d98c81f99f1cf (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/62f750cca300118d22a4ba2d77968343b0... commit 62f750cca300118d22a4ba2d77968343b0acfd53 Author: Adam T. Moody <[email protected]> Date: Tue Feb 9 17:49:16 2016 -0800 Fix fall-through bug in external32 pack In a call to MPI_File_write_at_all using external32, the ext32 buffer has been overwritten when it's freed. BASIC_convert96 and BASIC_convert128 are being called here, but it should only be calling BASIC_convert64 for a 64-bit float. There are some missing "break" statements in mpid_ext32_segment.h, so for 64-bit floats it ends up executing all three functions one after another. Signed-off-by: Rob Latham <[email protected]> diff --git a/src/mpid/common/datatype/mpid_ext32_segment.h b/src/mpid/common/datatype/mpid_ext32_segment.h index 97eff20..f643e3f 100644 --- a/src/mpid/common/datatype/mpid_ext32_segment.h +++ b/src/mpid/common/datatype/mpid_ext32_segment.h @@ -348,11 +348,13 @@ static inline void BASIC_convert128(char *src, char *dest) BASIC_convert64((char *)&src, \ (char *)&dest);\ } \ + break; \ case 12: \ { \ BASIC_convert96((char *)&src, \ (char *)&dest); \ } \ + break; \ case 16: \ { \ BASIC_convert128((char *)&src, \ http://git.mpich.org/mpich.git/commitdiff/aaf2fd8548a58f7ff5ca3c9092f48ad9a7... commit aaf2fd8548a58f7ff5ca3c9092f48ad9a766d2e5 Author: Rob Latham <[email protected]> Date: Thu Feb 4 15:15:45 2016 -0600 the 'status' field was being used uninitialized Michael Raymond (SGI) found this with his static analyiss tools. No reviewer. diff --git a/src/mpi/romio/adio/ad_gpfs/ad_gpfs_wrcoll.c b/src/mpi/romio/adio/ad_gpfs/ad_gpfs_wrcoll.c index eae6ad5..d2c507c 100644 --- a/src/mpi/romio/adio/ad_gpfs/ad_gpfs_wrcoll.c +++ b/src/mpi/romio/adio/ad_gpfs/ad_gpfs_wrcoll.c @@ -918,7 +918,7 @@ static void ADIOI_Exch_and_write(ADIO_File fd, const void *buf, MPI_Datatype io_thread_args.io_kind = ADIOI_WRITE; io_thread_args.size = size; io_thread_args.offset = off; - io_thread_args.status = status; + io_thread_args.status = &status; io_thread_args.error_code = *error_code; if ( (pthread_create(&io_thread, NULL, ADIOI_IO_Thread_Func, &(io_thread_args))) != 0) diff --git a/src/mpi/romio/adio/common/ad_threaded_io.c b/src/mpi/romio/adio/common/ad_threaded_io.c index a4b3da3..2436a7a 100644 --- a/src/mpi/romio/adio/common/ad_threaded_io.c +++ b/src/mpi/romio/adio/common/ad_threaded_io.c @@ -21,11 +21,11 @@ void *ADIOI_IO_Thread_Func(void *vptr_args) { if (args->io_kind == ADIOI_READ) { ADIO_ReadContig(args->fd, args->buf, args->size, MPI_BYTE, ADIO_EXPLICIT_OFFSET, args->offset, - &(args->status), &(args->error_code)); + args->status, &(args->error_code)); } else { ADIO_WriteContig(args->fd, args->buf, args->size, MPI_BYTE, ADIO_EXPLICIT_OFFSET, args->offset, - &(args->status), &(args->error_code)); + args->status, &(args->error_code)); } pthread_exit(&(args->error_code)); return NULL; diff --git a/src/mpi/romio/adio/common/onesided_aggregation.c b/src/mpi/romio/adio/common/onesided_aggregation.c index 0c0a5dd..35e0a82 100644 --- a/src/mpi/romio/adio/common/onesided_aggregation.c +++ b/src/mpi/romio/adio/common/onesided_aggregation.c @@ -1124,7 +1124,7 @@ printf("first barrier roundIter %d\n",roundIter); io_thread_args.io_kind = ADIOI_WRITE; io_thread_args.size = (currentRoundFDEnd-currentRoundFDStart) + 1; io_thread_args.offset = currentRoundFDStart; - io_thread_args.status = status; + io_thread_args.status = &status; io_thread_args.error_code = *error_code; if ( (pthread_create(&io_thread, NULL, @@ -1898,7 +1898,7 @@ printf("iAmUsedAgg - currentRoundFDStart initialized " io_thread_args.io_kind = ADIOI_READ; io_thread_args.size = amountDataToReadNextRound; io_thread_args.offset = nextRoundFDStart; - io_thread_args.status = status; + io_thread_args.status = &status; io_thread_args.error_code = *error_code; if ( (pthread_create(&io_thread, NULL, ADIOI_IO_Thread_Func, &(io_thread_args))) != 0) diff --git a/src/mpi/romio/adio/common/p2p_aggregation.c b/src/mpi/romio/adio/common/p2p_aggregation.c index 9804503..ac77a8f 100644 --- a/src/mpi/romio/adio/common/p2p_aggregation.c +++ b/src/mpi/romio/adio/common/p2p_aggregation.c @@ -423,7 +423,7 @@ void ADIOI_P2PContigWriteAggregation(ADIO_File fd, io_thread_args.io_kind = ADIOI_WRITE; io_thread_args.size = totalDataReceivedThisRound; io_thread_args.offset = currentRoundFDStart; - io_thread_args.status = status; + io_thread_args.status = &status; io_thread_args.error_code = *error_code; if ( (pthread_create(&io_thread, NULL, ADIOI_IO_Thread_Func, &(io_thread_args))) != 0) @@ -722,7 +722,7 @@ void ADIOI_P2PContigReadAggregation(ADIO_File fd, io_thread_args.io_kind = ADIOI_READ; io_thread_args.size = amountDataToReadNextRound; io_thread_args.offset = nextRoundFDStart; - io_thread_args.status = status; + io_thread_args.status = &status; io_thread_args.error_code = *error_code; if ( (pthread_create(&io_thread, NULL, ADIOI_IO_Thread_Func, &(io_thread_args))) != 0) diff --git a/src/mpi/romio/adio/include/adioi.h b/src/mpi/romio/adio/include/adioi.h index 26116f9..bc00a87 100644 --- a/src/mpi/romio/adio/include/adioi.h +++ b/src/mpi/romio/adio/include/adioi.h @@ -1046,7 +1046,7 @@ typedef struct wcThreadFuncData { char *buf; int size; ADIO_Offset offset; - ADIO_Status status; + ADIO_Status *status; int error_code; } ADIOI_IO_ThreadFuncData; http://git.mpich.org/mpich.git/commitdiff/aeb114962d94292260dd5e8e48f3d1818d... commit aeb114962d94292260dd5e8e48f3d1818d15aa78 Author: Rob Latham <[email protected]> Date: Wed Sep 23 16:56:26 2015 -0500 A comment about our use of MPIU_trmalloc Calling MPIU_trmalloc directly is an old hack to avoid some build system complications. It is highly unusual, so drop a comment explaining. No reviewer. diff --git a/src/mpi/romio/adio/common/malloc.c b/src/mpi/romio/adio/common/malloc.c index 6323942..7f3462b 100644 --- a/src/mpi/romio/adio/common/malloc.c +++ b/src/mpi/romio/adio/common/malloc.c @@ -37,6 +37,12 @@ void *ADIOI_Calloc_fn(size_t nelem, size_t elsize, int lineno, const char *fname void *ADIOI_Realloc_fn(void *ptr, size_t size, int lineno, const char *fname); void ADIOI_Free_fn(void *ptr, int lineno, const char *fname); +/* we used to call MPIU_Malloc, MPIU_Calloc, etc. these macros either call + * malloc/calloc directly or they add instrumentation/tracing. When we re-did + * the build system in 2011 we hacked ROMIO to call MPIU_trmalloc directly -- + * once again ROMIO's sort-of standalone status bites us. We dont' test for + * MPIU_FUNCS: these are set in configure with an AC_DEFINE when we figure out + * we are built as part of MPICH */ void *ADIOI_Malloc_fn(size_t size, int lineno, const char *fname) { void *new; ----------------------------------------------------------------------- Summary of changes: src/mpi/romio/adio/ad_gpfs/ad_gpfs_wrcoll.c | 2 +- src/mpi/romio/adio/common/ad_threaded_io.c | 4 ++-- src/mpi/romio/adio/common/malloc.c | 6 ++++++ src/mpi/romio/adio/common/onesided_aggregation.c | 4 ++-- src/mpi/romio/adio/common/p2p_aggregation.c | 4 ++-- src/mpi/romio/adio/include/adioi.h | 2 +- src/mpid/common/datatype/mpid_ext32_segment.h | 2 ++ 7 files changed, 16 insertions(+), 8 deletions(-) hooks/post-receive -- MPICH primary repository