Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] [OMPI svn] svn:open-mpi r32346 - trunk/opal/mca/btl/openib
From: Nathan Hjelm (hjelmn_at_[hidden])
Date: 2014-07-29 17:53:50


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-mailer_at_[hidden] 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
> svn_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/svn



  • application/pgp-signature attachment: stored