[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.1rc1-29-g65a3af4

mysql vizuser noreply at mpich.org
Fri Nov 15 17:06:34 CST 2013


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  65a3af4338217e941e0d099a1fadad1a517d3411 (commit)
      from  5014a82c26f3a01aa0bb190510413ebb8df81001 (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/65a3af4338217e941e0d099a1fadad1a517d3411

commit 65a3af4338217e941e0d099a1fadad1a517d3411
Author: Antonio J. Pena <apenya at mcs.anl.gov>
Date:   Fri Nov 15 15:27:19 2013 -0600

    Fixed --enabled-debuginfo segfaults
    
    Added support for Ibsend and persistent sends, and fixed all other cases by
    clearing out the dgb-next field of send requests. Closes #1932.
    
    Signed-off-by: Ken Raffenetti <raffenet at mcs.anl.gov>

diff --git a/src/mpi/debugger/dbginit.c b/src/mpi/debugger/dbginit.c
index 5b23f74..788ceea 100644
--- a/src/mpi/debugger/dbginit.c
+++ b/src/mpi/debugger/dbginit.c
@@ -299,8 +299,6 @@ void MPIR_DebuggerSetAborting( const char *msg )
  * (more specifically, requests created with MPI_Isend, MPI_Issend, or 
  * MPI_Irsend).
  *
- * FIXME: We need to add MPI_Ibsend and the persistent send requests to
- * the known send requests.
  * FIXME: We should exploit this to allow Finalize to report on 
  * send requests that were never completed.
  */
diff --git a/src/mpi/pt2pt/bsend_init.c b/src/mpi/pt2pt/bsend_init.c
index 295b3e9..2ad2319 100644
--- a/src/mpi/pt2pt/bsend_init.c
+++ b/src/mpi/pt2pt/bsend_init.c
@@ -119,6 +119,7 @@ int MPI_Bsend_init(const void *buf, int count, MPI_Datatype datatype,
     mpi_errno = MPID_Bsend_init(buf, count, datatype, dest, tag, comm_ptr,
 				MPID_CONTEXT_INTRA_PT2PT, &request_ptr);
     if (mpi_errno != MPI_SUCCESS) goto fn_fail;
+    MPIR_SENDQ_REMEMBER(request_ptr, dest, tag, comm_ptr->context_id);
 
     /* return the handle of the request to the user */
     MPIU_OBJ_PUBLISH_HANDLE(*request, request_ptr->handle);
diff --git a/src/mpi/pt2pt/ibsend.c b/src/mpi/pt2pt/ibsend.c
index 3c92016..9bced9a 100644
--- a/src/mpi/pt2pt/ibsend.c
+++ b/src/mpi/pt2pt/ibsend.c
@@ -105,6 +105,7 @@ int MPIR_Ibsend_impl(const void *buf, int count, MPI_Datatype datatype, int dest
     mpi_errno = MPIR_Bsend_isend( buf, count, datatype, dest, tag, comm_ptr,
 				  IBSEND, &request_ptr );
     if (mpi_errno != MPI_SUCCESS) goto fn_fail;
+    MPIR_SENDQ_REMEMBER(request_ptr, dest, tag, comm_ptr->context_id);
 
     /* FIXME: use the memory management macros */
     ibinfo = (ibsend_req_info *)MPIU_Malloc( sizeof(ibsend_req_info) );
diff --git a/src/mpi/pt2pt/mpir_request.c b/src/mpi/pt2pt/mpir_request.c
index 0a195ce..22d9154 100644
--- a/src/mpi/pt2pt/mpir_request.c
+++ b/src/mpi/pt2pt/mpir_request.c
@@ -73,7 +73,6 @@ int MPIR_Request_complete(MPI_Request * request, MPID_Request * request_ptr,
 		MPIR_STATUS_SET_CANCEL_BIT(*status, MPIR_STATUS_GET_CANCEL_BIT(request_ptr->status));
 	    }
 	    mpi_errno = request_ptr->status.MPI_ERROR;
-	    /* FIXME: are Ibsend requests added to the send queue? */
 	    MPIR_SENDQ_FORGET(request_ptr);
 	    MPID_Request_release(request_ptr);
 	    *request = MPI_REQUEST_NULL;
@@ -132,10 +131,6 @@ int MPIR_Request_complete(MPI_Request * request, MPID_Request * request_ptr,
                     }
 		}
 
-		/* FIXME: MPIR_SENDQ_FORGET(request_ptr); -- it appears that
-		   persistent sends are not currently being added to the send
-		   queue.  should they be, or should this release be
-		   conditional? */
 		MPID_Request_release(prequest_ptr);
 	    }
 	    else
diff --git a/src/mpi/pt2pt/send_init.c b/src/mpi/pt2pt/send_init.c
index 1be6096..af5ab90 100644
--- a/src/mpi/pt2pt/send_init.c
+++ b/src/mpi/pt2pt/send_init.c
@@ -125,6 +125,7 @@ int MPI_Send_init(const void *buf, int count, MPI_Datatype datatype, int dest,
     mpi_errno = MPID_Send_init(buf, count, datatype, dest, tag, comm_ptr,
 			       MPID_CONTEXT_INTRA_PT2PT, &request_ptr);
     if (mpi_errno != MPI_SUCCESS) goto fn_fail;
+    MPIR_SENDQ_REMEMBER(request_ptr, dest, tag, comm_ptr->context_id);
     
     /* return the handle of the request to the user */
     MPIU_OBJ_PUBLISH_HANDLE(*request, request_ptr->handle);
diff --git a/src/mpid/ch3/include/mpidimpl.h b/src/mpid/ch3/include/mpidimpl.h
index 5b5eadc..a3a5c31 100644
--- a/src/mpid/ch3/include/mpidimpl.h
+++ b/src/mpid/ch3/include/mpidimpl.h
@@ -295,6 +295,12 @@ extern MPIDI_Process_t MPIDI_Process;
 #define MPIDI_CH3_REQUEST_INIT(a_)
 #endif
 
+#ifdef HAVE_DEBUGGER_SUPPORT
+#define MPIDI_Request_clear_dbg(sreq_) ((sreq_)->dbg_next = NULL)
+#else
+#define MPIDI_Request_clear_dbg(sreq_)
+#endif
+
 /* FIXME: Why does a send request need the match information?
    Is that for debugging information?  In case the initial envelope
    cannot be sent? Ditto for the dev.user_buf, count, and datatype 
@@ -344,6 +350,7 @@ extern MPIDI_Process_t MPIDI_Process;
     (sreq_)->dev.OnFinal	   = NULL;                      \
     (sreq_)->dev.iov_count	   = 0;                         \
     (sreq_)->dev.iov_offset	   = 0;                         \
+    MPIDI_Request_clear_dbg(sreq_);                             \
 }
 
 /* This is the receive request version of MPIDI_Request_create_sreq */

-----------------------------------------------------------------------

Summary of changes:
 src/mpi/debugger/dbginit.c      |    2 --
 src/mpi/pt2pt/bsend_init.c      |    1 +
 src/mpi/pt2pt/ibsend.c          |    1 +
 src/mpi/pt2pt/mpir_request.c    |    5 -----
 src/mpi/pt2pt/send_init.c       |    1 +
 src/mpid/ch3/include/mpidimpl.h |    7 +++++++
 6 files changed, 10 insertions(+), 7 deletions(-)


hooks/post-receive
-- 
MPICH primary repository


More information about the commits mailing list