We changed things a bit in the mpool, the deregister will remove the
registration from the cache and then call release, if the reference count
is <=0, the memory is then deregistered, otherwise it will be deregistered
later via another release call. The BTL module increments the reference
count on the registration so it should not be deregestered until the the
registration's reference count is decremented in btl_free.
Are you seeing an actual vapi error with the attached code? If so it is
probably a reference count issue that we need to deal with.
> Hello Galen,
> It seams this issue is still present and can be easily triggered.
> (see attached program). Do you have plans to fix it?
> On Wed, Sep 21, 2005 at 12:06:18PM -0600, Galen M. Shipman wrote:
>> > Gleb Natapov wrote:
>> >> Hello Galen,
>> >> Finally I've got some time to look through the new code.
>> >> I have couple of notes. In pml_ob1_rdma.c you try to merge
>> >> registrations in the number of places. The code looks like this:
>> >> btl_mpool->mpool_deregister(btl_mpool, reg);
>> >> btl_mpool->mpool_register(btl_mpool,
>> >> new_base,
>> >> new_len,
>> >> MCA_MPOOL_FLAGS_CACHE,
>> >> ®);
>> >> How do you know reg is not in use? You can't deregister it if
>> >> somebody
>> >> is using the registration!
>> > Good catch... this should check the reference count and
>> > only deregister when the reference count actually goes to zero...
>> > _______________________________________________
>> > devel mailing list
>> > devel_at_[hidden]
>> > http://www.open-mpi.org/mailman/listinfo.cgi/devel
>> Yes, this was a good catch.. This was causing all sorts of fun for us!