[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.2-178-g62f750c

Service Account noreply at mpich.org
Fri Feb 12 13:18:40 CST 2016


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/62f750cca300118d22a4ba2d77968343b0acfd53

commit 62f750cca300118d22a4ba2d77968343b0acfd53
Author: Adam T. Moody <moody20 at llnl.gov>
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 <robl at mcs.anl.gov>

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/aaf2fd8548a58f7ff5ca3c9092f48ad9a766d2e5

commit aaf2fd8548a58f7ff5ca3c9092f48ad9a766d2e5
Author: Rob Latham <robl at mcs.anl.gov>
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/aeb114962d94292260dd5e8e48f3d1818d15aa78

commit aeb114962d94292260dd5e8e48f3d1818d15aa78
Author: Rob Latham <robl at mcs.anl.gov>
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


More information about the commits mailing list