On Wed, Feb 23, 2022 at 04:40:19PM -0600, Bob Pearson wrote: > OK I looked at this again. Here is what happens. > > without the complete()/wait_for_completion() fix the test passes but > the (private i.e. not visible to rdma-core) mca object is holding a > reference on qp which will be freed after the call_rcu() subroutine > takes place. Meanwhile the ib_detach_mcast() call returns to > rdma-core and since there is nothing left to do the test is over and > the python code closes the device. But this generates a warning > (rdma_core.c line 940) since not all the user objects (i.e. the qp) > were freed. In other contexts we are planning on putting > complete()/wait...()'s in all the other verbs calls which ref count > objects for the same reason. I think it applies here too. This explanation makes sense.. The mistake is on the QP side where it has a refcount but doesn't wait for it to drain I suppose. Jason