Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

From: George Bosilca (bosilca_at_[hidden])
Date: 2007-07-20 11:15:10


The problem started with the compiler complaining about using a non
initialized variable. When I looked into the code, I just planned to
initialize it with some default value to make the compiler stop
complaining. But then I realize that all the ifs between the moment
where this buffer get initialized and the moment where it get freed,
have to release it before calling return (error cases). So my choices
were: either to add ifs around all these OBJ_RELEASE or to move the
allocation outside the if, in such a way that everybody can safely
release it. I choose the approach that have a minimum impact in
number of lines of code (I'm not a fanatic of copy & paste). It's
definitively not a performance critical code, so one more memory
allocation will have a zero impact.

   george.

On Jul 20, 2007, at 7:32 AM, Ralph Castain wrote:

> I guess I really don't understand this change. How is it better that I
> *always* malloc a buffer that I might never use, just so I can
> *always*
> release it - versus *only* malloc'ing and releasing a buffer when I
> know I
> need it??
>
> I don't really care, but this seems kinda wasteful and I would like to
> understand the benefit.
>
> Thanks
> Ralph
>
>
>
> On 7/19/07 10:06 PM, "bosilca_at_[hidden]" <bosilca_at_[hidden]> wrote:
>
>> Author: bosilca
>> Date: 2007-07-20 00:06:39 EDT (Fri, 20 Jul 2007)
>> New Revision: 15533
>> URL: https://svn.open-mpi.org/trac/ompi/changeset/15533
>>
>> Log:
>> Always release the buffer (this imply the buffer has to be created
>> outside the special case).
>>
>> Text files modified:
>> trunk/orte/orted/orted_main.c | 6 ++++--
>> 1 files changed, 4 insertions(+), 2 deletions(-)
>>
>> Modified: trunk/orte/orted/orted_main.c
>> =====================================================================
>> =========
>> --- trunk/orte/orted/orted_main.c (original)
>> +++ trunk/orte/orted/orted_main.c 2007-07-20 00:06:39 EDT (Fri, 20
>> Jul 2007)
>> @@ -391,8 +391,8 @@
>> }
>>
>> /* if we are not a seed, prep a return buffer to say we
>> started okay */
>> + buffer = OBJ_NEW(orte_buffer_t);
>> if (!orte_process_info.seed) {
>> - buffer = OBJ_NEW(orte_buffer_t);
>> if (ORTE_SUCCESS != (ret = orte_dss.pack(buffer, &zero, 1,
>> ORTE_INT))) {
>> ORTE_ERROR_LOG(ret);
>> OBJ_RELEASE(buffer);
>> @@ -459,6 +459,7 @@
>> if (ORTE_SUCCESS != (ret = orte_ns.get_jobid_string
>> (&jobidstring,
>>
>> orte_process_info.my_name))) {
>> ORTE_ERROR_LOG(ret);
>> + OBJ_RELEASE(buffer);
>> return ret;
>> }
>>
>> @@ -509,6 +510,7 @@
>> ORTE_RML_NON_PERSISTENT,
>> orte_daemon_recv_gate, NULL);
>> if (ret != ORTE_SUCCESS && ret != ORTE_ERR_NOT_IMPLEMENTED) {
>> ORTE_ERROR_LOG(ret);
>> + OBJ_RELEASE(buffer);
>> return ret;
>> }
>>
>> @@ -547,8 +549,8 @@
>> OBJ_RELEASE(buffer);
>> return ret;
>> }
>> - OBJ_RELEASE(buffer); /* done with this */
>> }
>> + OBJ_RELEASE(buffer); /* done with this */
>>
>> if (orte_debug_daemons_flag) {
>> opal_output(0, "%s orted: up and running - waiting for
>> commands!",
>> ORTE_NAME_PRINT(orte_process_info.my_name));
>> _______________________________________________
>> svn mailing list
>> svn_at_[hidden]
>> http://www.open-mpi.org/mailman/listinfo.cgi/svn
>
>
> _______________________________________________
> devel mailing list
> devel_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/devel