http://defect.opensolaris.org/bz/show_bug.cgi?id=14344


amaguire <alan.maguire at sun.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ACCEPTED                    |CAUSEKNOWN


--- Comment #1 from amaguire <alan.maguire at sun.com> 2010-02-03 14:07:52 UTC 
---
In these deadlock cases, the event queue has 31 events pending. On x86:

> ::uu_list_pool
ADDR     NAME                            COMPARE FLAGS
080aaf08 SUNW,libscf_datael             c28b8a04     D
080aae08 SUNW,libscf_iter               c28b8a38     D
080aad08 SUNW,libscf_transaction_entity c28b89bc     D
080aac08 object_list_pool               080699f0     D
080aab08 event_queue_pool               0805d2fc     D
> 
> 080aab08::walk uu_list|::walk uu_list_node ! wc
     31      31     248

On sparc:


> ::uu_list_pool
ADDR     NAME                            COMPARE FLAGS
00087f08 SUNW,libscf_datael             ff0a8b84     D
00087e08 SUNW,libscf_iter               ff0a8bc0     D
00087d08 SUNW,libscf_transaction_entity ff0a8b4c     D
00087c08 object_list_pool               00028a68     D
00087b08 event_queue_pool               0001c780     D
> 00087b08::walk uu_list|::walk uu_list_node ! wc
      31      31     186
> 

This suggests that deadlock occurs in the event handler thread as follows. An
event we are handling requires us to enqueue a new event, but since the event
queue is full (31 events + the current event we're processing), it has nowhere
to go. The event handling thread is blocked trying to enqueue, and since it is
responsible for draining the event queue via nwamd_event_fini() calls, we're
stuck. I can't think of an immediate way round this (we can't free the current
event until we've finished handling it and sent any externally-relevant data
via nwamd_event_send()) using the preallocated event approach.

-- 
Configure bugmail: http://defect.opensolaris.org/bz/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.

Reply via email to