[mpich2-commits] r5505 - in mpich2/trunk/src: mpi/attr mpid/ch3/src
goodell at mcs.anl.gov
goodell at mcs.anl.gov
Tue Oct 20 15:35:39 CDT 2009
Author: goodell
Date: 2009-10-20 15:35:39 -0500 (Tue, 20 Oct 2009)
New Revision: 5505
Modified:
mpich2/trunk/src/mpi/attr/attrutil.c
mpich2/trunk/src/mpid/ch3/src/ch3u_rma_ops.c
mpich2/trunk/src/mpid/ch3/src/mpid_vc.c
Log:
Twiddle some ref counting to keep valgrind happy.
These were not strictly bugs, but by keeping valgrind happy we greatly
improve its usefulness for debugging.
No reviewer.
Modified: mpich2/trunk/src/mpi/attr/attrutil.c
===================================================================
--- mpich2/trunk/src/mpi/attr/attrutil.c 2009-10-20 20:35:38 UTC (rev 5504)
+++ mpich2/trunk/src/mpi/attr/attrutil.c 2009-10-20 20:35:39 UTC (rev 5505)
@@ -38,7 +38,11 @@
/* Provides a way to trap all attribute allocations when debugging leaks. */
MPID_Attribute *MPID_Attr_alloc(void)
{
- return (MPID_Attribute *)MPIU_Handle_obj_alloc(&MPID_Attr_mem);
+ MPID_Attribute *attr = (MPID_Attribute *)MPIU_Handle_obj_alloc(&MPID_Attr_mem);
+ /* attributes don't have refcount semantics, but let's keep valgrind and
+ * the debug logging pacified */
+ MPIU_Object_set_ref(attr, 0);
+ return attr;
}
void MPID_Attr_free(MPID_Attribute *attr_ptr)
Modified: mpich2/trunk/src/mpid/ch3/src/ch3u_rma_ops.c
===================================================================
--- mpich2/trunk/src/mpid/ch3/src/ch3u_rma_ops.c 2009-10-20 20:35:38 UTC (rev 5504)
+++ mpich2/trunk/src/mpid/ch3/src/ch3u_rma_ops.c 2009-10-20 20:35:39 UTC (rev 5505)
@@ -40,6 +40,8 @@
*win_ptr = (MPID_Win *)MPIU_Handle_obj_alloc( &MPID_Win_mem );
MPIU_ERR_CHKANDJUMP(!(*win_ptr),mpi_errno,MPI_ERR_OTHER,"**nomem");
+ MPIU_Object_set_ref(*win_ptr, 1);
+
(*win_ptr)->fence_cnt = 0;
(*win_ptr)->base = base;
(*win_ptr)->size = size;
@@ -121,6 +123,7 @@
{
int mpi_errno=MPI_SUCCESS, total_pt_rma_puts_accs, i, *recvcnts, comm_size;
MPID_Comm *comm_ptr;
+ int in_use;
MPIU_CHKLMEM_DECL(1);
MPIU_THREADPRIV_DECL;
@@ -166,15 +169,17 @@
}
NMPI_Comm_free(&((*win_ptr)->comm));
-
+
MPIU_Free((*win_ptr)->base_addrs);
MPIU_Free((*win_ptr)->disp_units);
MPIU_Free((*win_ptr)->all_win_handles);
MPIU_Free((*win_ptr)->pt_rma_puts_accs);
-
- /* check whether refcount needs to be decremented here as in group_free */
+
+ MPIU_Object_release_ref(*win_ptr, &in_use);
+ /* MPI windows don't have reference count semantics, so this should always be true */
+ MPIU_Assert(!in_use);
MPIU_Handle_obj_free( &MPID_Win_mem, *win_ptr );
-
+
fn_exit:
MPIR_Nest_decr();
MPIU_CHKLMEM_FREEALL();
Modified: mpich2/trunk/src/mpid/ch3/src/mpid_vc.c
===================================================================
--- mpich2/trunk/src/mpid/ch3/src/mpid_vc.c 2009-10-20 20:35:38 UTC (rev 5504)
+++ mpich2/trunk/src/mpid/ch3/src/mpid_vc.c 2009-10-20 20:35:39 UTC (rev 5505)
@@ -77,8 +77,8 @@
MPIDI_FUNC_ENTER(MPID_STATE_MPID_VCRT_CREATE);
MPIU_CHKPMEM_MALLOC(vcrt, MPIDI_VCRT_t *, sizeof(MPIDI_VCRT_t) + (size - 1) * sizeof(MPIDI_VC_t *), mpi_errno, "**nomem");
+ vcrt->handle = HANDLE_SET_KIND(0, HANDLE_KIND_INVALID);
MPIU_Object_set_ref(vcrt, 1);
- vcrt->handle = HANDLE_SET_KIND(0, HANDLE_KIND_INVALID);
vcrt->size = size;
*vcrt_ptr = vcrt;
@@ -703,8 +703,8 @@
int MPIDI_VC_Init( MPIDI_VC_t *vc, MPIDI_PG_t *pg, int rank )
{
vc->state = MPIDI_VC_STATE_INACTIVE;
+ vc->handle = HANDLE_SET_MPI_KIND(0, MPID_VCONN);
MPIU_Object_set_ref(vc, 0);
- vc->handle = MPID_VCONN;
vc->pg = pg;
vc->pg_rank = rank;
vc->lpid = lpid_counter++;
More information about the mpich2-commits
mailing list