[Openib-windows] Failures on ib_close_al
Leonid Keller
leonid at mellanox.co.il
Sun Aug 6 09:24:14 PDT 2006
Hi Fab,
While preparing IBADM for release we saw one of it tools failing on
exit. In debug version we it produces several assertions:
Assertion Failed:ref_cnt != 1 || p_obj->type == AL_OBJ_TYPE_H_CQ
Assertion Failed:p_list_item->p_list != p_list
As far as i can see, it happens, because, while performing of
ib_close_al(), IBAL destroys POOL_KEY before QP.
In more details:
- ib_close_al calls destroy() of AL object;
- destroy() of AL takes the first child - CA - and calls its
destroy();
- destroy() of CA takes the first child - PD - and calls its
destroy();
- destroy() of PD takes the first child - AV - and calls its
destroy();
- destroy() of PD takes the second child - POOL_KEY - and calls its
destroy();
- destroy() of POOL_KEY decreases its ref_cnt to 0 and queues an
object
for *asynchronous* destruction of the POOL_KEY. Then it returns to
destroy() of PD;
- destroy() of PD takes the third child - QP - and calls its
destroy();
- destroy() of QP calls destroying_qp(), which takes the reference
on POOL_KEY before calling dereg_mad_poo();
The latter action causes the first assert:
Assertion Failed:ref_cnt != 1 || p_obj->type ==
AL_OBJ_TYPE_H_CQ
- then dereg_mad_poo() starts second destroy of POOL_KEY, which
causes the second assert
Assertion Failed:p_list_item->p_list != p_list
on queuing the same object for *asynchronous* destruction of the
POOL_KEY.
Do you have any idea how to fix that ?
TIA,
Leonid
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20060806/2c3ec9ca/attachment.html>
More information about the ofw
mailing list