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, [email protected] 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
> [email protected]
> http://www.open-mpi.org/mailman/listinfo.cgi/svn
pgpUNolzO0nwN.pgp
Description: PGP signature
