+1 -- we shouldn't be using assert().
On Nov 4, 2011, at 2:15 PM, Tim Mattox wrote: > I doubt you want to be using assert() here or anywhere in the > OMPI library. If the rem_info.rem_qps pointer is NULL, I would > think you want to do something other than just die. > And, in a production build, if it was to ever be null, things would > eventually crash right? The ompi library should strive to never crash... > maybe print an error message and abort, but flat out crashing > seems wrong. > > I've been away from active OMPI development for awhile now so I > might be remembering this incorrectly, but isn't there some > policy/SOP on not using assert in the OMPI library code? > > Please excuse me while I return to being a silent/lurking ghost > of an OMPI developer. > > On Thu, Nov 3, 2011 at 8:15 PM, <cy...@osl.iu.edu> wrote: >> Author: cyeoh >> Date: 2011-11-03 20:15:08 EDT (Thu, 03 Nov 2011) >> New Revision: 25431 >> URL: https://svn.open-mpi.org/trac/ompi/changeset/25431 >> >> Log: >> Removes pointless memmove which because of a previous memcpy will always >> have identical source and destination pointers. See #2871 >> Plugs a couple of minor memory leaks related to remote qp info >> >> >> Text files modified: >> trunk/ompi/mca/btl/openib/btl_openib_endpoint.c | 3 +++ >> trunk/ompi/mca/btl/openib/connect/btl_openib_connect_oob.c | 22 >> ++++++++++++---------- >> 2 files changed, 15 insertions(+), 10 deletions(-) >> >> Modified: trunk/ompi/mca/btl/openib/btl_openib_endpoint.c >> ============================================================================== >> --- trunk/ompi/mca/btl/openib/btl_openib_endpoint.c (original) >> +++ trunk/ompi/mca/btl/openib/btl_openib_endpoint.c 2011-11-03 20:15:08 >> EDT (Thu, 03 Nov 2011) >> @@ -452,6 +452,9 @@ >> free(endpoint->qps); >> endpoint->qps = NULL; >> >> + free(endpoint->rem_info.rem_qps); >> + free(endpoint->rem_info.rem_srqs); >> + >> /* unregister xrc recv qp */ >> #if HAVE_XRC >> if (0 != endpoint->xrc_recv_qp_num) { >> >> Modified: trunk/ompi/mca/btl/openib/connect/btl_openib_connect_oob.c >> ============================================================================== >> --- trunk/ompi/mca/btl/openib/connect/btl_openib_connect_oob.c (original) >> +++ trunk/ompi/mca/btl/openib/connect/btl_openib_connect_oob.c 2011-11-03 >> 20:15:08 EDT (Thu, 03 Nov 2011) >> @@ -272,19 +272,14 @@ >> static int set_remote_info(mca_btl_base_endpoint_t* endpoint, >> mca_btl_openib_rem_info_t* rem_info) >> { >> + /* Free up the memory pointed to by rem_qps before overwriting the >> pointer >> + in the following memcpy */ >> + free(endpoint->rem_info.rem_qps); >> + >> /* copy the rem_info stuff */ >> memcpy(&((mca_btl_openib_endpoint_t*) endpoint)->rem_info, >> rem_info, sizeof(mca_btl_openib_rem_info_t)); >> >> - /* copy over the rem qp info */ >> - /* per #2871, changed this from memcpy() to memmove() to handle >> - * the case of overlapping (or same) src/dest addresses. >> - * However, we still *should* figure out why the src and dest >> - * addresses are sometimes the same. */ >> - memmove(endpoint->rem_info.rem_qps, >> - rem_info->rem_qps, sizeof(mca_btl_openib_rem_qp_info_t) * >> - mca_btl_openib_component.num_qps); >> - >> BTL_VERBOSE(("Setting QP info, LID = %d", endpoint->rem_info.rem_lid)); >> return OMPI_SUCCESS; >> } >> @@ -671,7 +666,12 @@ >> uint8_t message_type; >> bool master; >> >> - /* start by unpacking data first so we know who is knocking at >> + /* We later memcpy this whole structure. Make sure >> + that all the parameters are initialized, especially >> + the pointers */ >> + memset(&rem_info,0, sizeof(rem_info)); >> + >> + /* start by unpacking data first so we know who is knocking at >> our door */ >> BTL_VERBOSE(("unpacking %d of %d\n", cnt, OPAL_UINT8)); >> rc = opal_dss.unpack(buffer, &message_type, &cnt, OPAL_UINT8); >> @@ -857,6 +857,7 @@ >> to CONNECTING, and then reply with our QP >> information */ >> if (master) { >> + assert(rem_info.rem_qps != NULL); >> rc = reply_start_connect(ib_endpoint, &rem_info); >> } else { >> rc = >> oob_module_start_connect(ib_endpoint->endpoint_local_cpc, >> @@ -879,6 +880,7 @@ >> break; >> >> case MCA_BTL_IB_CONNECTING : >> + assert(rem_info.rem_qps != NULL); >> set_remote_info(ib_endpoint, &rem_info); >> if (OMPI_SUCCESS != (rc = qp_connect_all(ib_endpoint))) { >> BTL_ERROR(("endpoint connect error: %d", rc)); >> _______________________________________________ >> svn-full mailing list >> svn-f...@open-mpi.org >> http://www.open-mpi.org/mailman/listinfo.cgi/svn-full >> > > > > -- > Tim Mattox, Ph.D. - http://homepage.mac.com/tmattox/ > timat...@open-mpi.org || tmat...@gmail.com > I'm a bright... http://www.the-brights.net/ > > _______________________________________________ > devel mailing list > de...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/devel -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/