[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