Josh, you can not free from a memory location that has been registered
with the MCA variable system. It will likely SEGV when the component is
unloaded.

You should call mca_base_var_get_value to get the source of the
value. The following should do it:

vari = mca_base_var_find ("opal", "btl", "openib", "receive_queues");

mca_base_var_get_value (vari, NULL, &source, NULL);

If the source is MCA_BASE_VAR_SOURCE_DEFAULT then the value was not
modified by a file, the enviornment, or MPI_T.

-Nathan

On Tue, Jul 29, 2014 at 05:42:20PM -0400, svn-commit-mai...@open-mpi.org wrote:
> Author: jladd (Joshua Ladd)
> Date: 2014-07-29 17:42:20 EDT (Tue, 29 Jul 2014)
> New Revision: 32346
> URL: https://svn.open-mpi.org/trac/ompi/changeset/32346
> 
> Log:
> This fixes the OpenIB BTL receive queue selection logic in the trunk. Custom 
> patch for 1.8.2 is provided in Refs #4816
> 
> Text files modified: 
>    trunk/opal/mca/btl/openib/btl_openib_component.c |    11 +++++++++++       
>                       
>    trunk/opal/mca/btl/openib/btl_openib_mca.c       |    12 +++++++-----      
>                       
>    2 files changed, 18 insertions(+), 5 deletions(-)
> 
> Modified: trunk/opal/mca/btl/openib/btl_openib_component.c
> ==============================================================================
> --- trunk/opal/mca/btl/openib/btl_openib_component.c  Tue Jul 29 14:59:59 
> 2014        (r32345)
> +++ trunk/opal/mca/btl/openib/btl_openib_component.c  2014-07-29 17:42:20 EDT 
> (Tue, 29 Jul 2014)      (r32346)
> @@ -265,6 +265,17 @@
>      opal_btl_openib_fd_finalize();
>      opal_btl_openib_ini_finalize();
>  
> +    if (NULL != mca_btl_openib_component.receive_queues
> +            && BTL_OPENIB_RQ_SOURCE_DEFAULT ==
> +                            mca_btl_openib_component.receive_queues_source) {
> +        /*
> +         * In that case, the string has not been duplicated during variable
> +         * registration. So it won't be freed by the mca_base_var system.
> +         * Free it here.
> +         */
> +        free(mca_btl_openib_component.receive_queues);
> +    }
> +
>      if (NULL != mca_btl_openib_component.default_recv_qps) {
>          free(mca_btl_openib_component.default_recv_qps);
>      }
> 
> Modified: trunk/opal/mca/btl/openib/btl_openib_mca.c
> ==============================================================================
> --- trunk/opal/mca/btl/openib/btl_openib_mca.c        Tue Jul 29 14:59:59 
> 2014        (r32345)
> +++ trunk/opal/mca/btl/openib/btl_openib_mca.c        2014-07-29 17:42:20 EDT 
> (Tue, 29 Jul 2014)      (r32346)
> @@ -661,12 +661,14 @@
>      mca_btl_openib_component.default_recv_qps = default_qps;
>      CHECK(reg_string("receive_queues", NULL,
>                       "Colon-delimited, comma-delimited list of receive 
> queues: P,4096,8,6,4:P,32768,8,6,4",
> -                     default_qps, &mca_btl_openib_component.receive_queues,
> +                     NULL, &mca_btl_openib_component.receive_queues,
>                       0));
> -    mca_btl_openib_component.receive_queues_source =
> -        (0 == strcmp(default_qps,
> -                     mca_btl_openib_component.receive_queues)) ?
> -        BTL_OPENIB_RQ_SOURCE_DEFAULT : BTL_OPENIB_RQ_SOURCE_MCA;
> +    if (NULL == mca_btl_openib_component.receive_queues) {
> +        mca_btl_openib_component.receive_queues = strdup(default_qps);
> +        mca_btl_openib_component.receive_queues_source = 
> BTL_OPENIB_RQ_SOURCE_DEFAULT;
> +    } else {
> +        mca_btl_openib_component.receive_queues_source = 
> BTL_OPENIB_RQ_SOURCE_MCA;
> +    }
>  
>      CHECK(reg_string("if_include", NULL,
>                       "Comma-delimited list of devices/ports to be used (e.g. 
> \"mthca0,mthca1:2\"; empty value means to use all ports found).  Mutually 
> exclusive with btl_openib_if_exclude.",
> _______________________________________________
> svn mailing list
> s...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/svn

Attachment: pgpUNolzO0nwN.pgp
Description: PGP signature

Reply via email to