FWIW: assert is used throughout the codebase, including orte and opal. I see no 
reason why it shouldn't be used here as well.


On Nov 4, 2011, at 5:45 PM, Barrett, Brian W wrote:

> Why not?  I use asserts all the time in OMPI code.  A quick grep in
> ompi/mca says I'm not alone.  There are a whole bunch of places where I
> "know" a fact, such as a pointer never being NULL or consistency checks
> between two values.  These don't need to run in production; I've
> theoretically tested the crap out of the code before then.  But they are
> really useful when developing and debugging later.
> 
> Just my $0.02.
> 
> Brian
> 
> On 11/4/11 5:18 PM, "Jeff Squyres" <jsquy...@cisco.com> wrote:
> 
>> +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/
>> 
>> 
>> _______________________________________________
>> devel mailing list
>> de...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>> 
>> 
> 
> 
> -- 
>  Brian W. Barrett
>  Dept. 1423: Scalable System Software
>  Sandia National Laboratories
> 
> 
> 
> 
> 
> 
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/devel


Reply via email to