On Mar 8, 2013, at 6:56 AM, George Bosilca <bosilca_at_[hidden]> wrote:
> Correctly used, OBJ_NEW / OBJ_CONSTRUCT / OBJ_DESTRUCT, are not a bad set of macros. When an object is not needed and known not to be refereed anymore, it can safely be OBJ_DESTRUCT despite the fact that its reference count is not 1. Otherwise, in all BTLs we will have to put all fragments back in the right place, remove them from all lists, before calling the destructor. In other words, no collection class in Open MPI will work correctly, especially not the one we use the most often the ompi_free_list.
So far, I haven't found any problems with those.
I've been finding problems with MPI predefined handles (e.g., COMM_WORLD, COMM_PARENT, and others). I still don't have dynamic processes working properly yet -- there's an extra refcount somewhere. https://svn.open-mpi.org/trac/ompi/changeset/28157 was found by this assert, too.
Let me get further along; if we find cases that are legitimately DESTRUCTing when the refcount isn't 1, we can discuss.
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/