On Wed, Apr 15, 2009 at 4:54 PM, Cathy Zhou <[email protected]> wrote:
>
>> I'm running snv_108 I see something that looks a lot like 6545725,
>> which was supposedly fixed in snv_105.  When I search the history via
>> opengrok and mercurial I see no mention of 6545725.  The hang may be
>> similar to 6799144 as well.
>>
> It looks like some pending DLPI/ioctl operation is stuck somewhere. You will
> have to go though the thread list to see anything suspicious. Please try to
> start with running "::stacks" in mdb and see any stack suspicious. Pay
> attention to the functions start with "mac_", "dls_", "dld_" or "vsw_".

::stacks doesn't work for me, but ::threadlist -v seems to do the trick...

I see several of these, which I assume are just waiting for work...

000002a100467ca0          185ee40                0   0  99      3002edbafa8
  PC: cv_wait+0x3c    THREAD: mac_soft_ring_worker()
  stack pointer for thread 2a100467ca0: 2a100467111
  [ 000002a100467111 cv_wait+0x3c() ]
    mac_soft_ring_worker+0x210()
    thread_start+4()

000002a101cb1ca0          185ee40                0   0  99      60017ae32e8
  PC: cv_wait+0x3c    THREAD: mac_srs_worker()
  stack pointer for thread 2a101cb1ca0: 2a101cb1111
  [ 000002a101cb1111 cv_wait+0x3c() ]
    mac_srs_worker+0x204()
    thread_start+4()

000002a100c0bca0          185ee40                0   0  60      6001848b7f8
  PC: cv_wait+0x3c    TASKQ: vsw_vsw_taskq0
  stack pointer for thread 2a100c0bca0: 2a100c0b111
  [ 000002a100c0b111 cv_wait+0x3c() ]
    taskq_thread+0x10c()
    thread_start+4()

000002a100517ca0          185ee40                0   0  60      60021aafca0
  PC: cv_wait+0x3c    THREAD: i_mac_notify_thread()
  stack pointer for thread 2a100517ca0: 2a100517111
  [ 000002a100517111 cv_wait+0x3c() ]
    i_mac_notify_thread+0x90()
    thread_start+4()

000002a100de9ca0          185ee40                0   0  99      6002829bb20
  PC: cv_wait+0x3c    THREAD: vsw_ldc_tx_worker()
  stack pointer for thread 2a100de9ca0: 2a100de9111
  [ 000002a100de9111 cv_wait+0x3c() ]
    vsw_ldc_tx_worker+0xa0()
    thread_start+4()

> ::threadlist -v ! egrep -e 'cv_wait\+0x3c.*(mac|dls|dld|vsw)_' | sort |uniq -c
 | sort -n
   1   PC: cv_wait+0x3c    TASKQ: vsw_vsw_taskq0
   1   PC: cv_wait+0x3c    TASKQ: vsw_vsw_taskq1
   1   PC: cv_wait+0x3c    THREAD: dld_taskq_dispatch()
   2   PC: cv_wait+0x3c    THREAD: vsw_ldc_rx_worker()
   2   PC: cv_wait+0x3c    THREAD: vsw_ldc_tx_worker()
  10   PC: cv_wait+0x3c    THREAD: i_mac_notify_thread()
  18   PC: cv_wait+0x3c    THREAD: mac_srs_worker()
 216   PC: cv_wait+0x3c    THREAD: mac_soft_ring_worker()


Then there is this...

000002a1001c7ca0          185ee40                0   0  60      6002ba55940
  PC: cv_wait+0x3c    TASKQ: system_taskq
  stack pointer for thread 2a1001c7ca0: 2a1001c6801
  [ 000002a1001c6801 cv_wait+0x3c() ]
    mac_flow_wait+0x50()
    mac_rx_srs_quiesce+0xb8()
    mac_rx_classify_flow_quiesce+0x2c()
    mac_rx_client_quiesce+0x20()
    mac_rx_set+0x10()
    vsw_set_if_hw_addr+0x124()
    vsw_mac_client_init+0x64()
    vsw_m_start+0x4c()
    mac_start+0x20()
    mac_promisc_add+0x14()
    dls_promisc+0x48()
    proto_promiscon_req+0x100()
    dld_wput_nondata_task+0x70()
    taskq_d_thread+0x9c()
    thread_start+4()

000002a100157ca0          185ee40                0   0  60      60013262a54
  PC: cv_wait+0x3c    TASKQ: system_taskq
  stack pointer for thread 2a100157ca0: 2a100156e41
  [ 000002a100156e41 cv_wait+0x3c() ]
    i_mac_perim_enter+0x5c()
    mac_perim_enter_by_mh+4()
    ioc_fast+0x128()
    dld_wput_nondata_task+0x80()
    taskq_thread+0x19c()
    thread_start+4()

Here's the thread that I mentioned initially...

0000030008303720      60027e438f8      60026718fa8   3   1      60017ace550
  PC: cv_wait+0x3c    CMD: snoop -d vsw0
  stack pointer for thread 30008303720: 2a100506bf1
  [ 000002a100506bf1 cv_wait+0x3c() ]
    dld_close+0x2c()
    qdetach+0x8c()
    strclose+0x36c()
    device_close+0x84()
    spec_close+0x13c()
    fop_close+0x48()
    closef+0x50()
    closeandsetf+0x348()
    close+8()
    syscall_trap32+0xcc()

And the mutex seems to be held by....

> 000002a100506bf1::mutex
            ADDR  TYPE             HELD MINSPL OLDSPL WAITERS
000002a100506bf1 adapt    2a1005068d900      -      -      no

And a stuck ifconfig -a...

0000030007fcd240      600235b44a8      600274f1370   3   1      60013262a54
  PC: cv_wait+0x3c    CMD: /usr/sbin/ifconfig -a
  stack pointer for thread 30007fcd240: 2a1024da361
  [ 000002a1024da361 cv_wait+0x3c() ]
    i_mac_perim_enter+0x5c()
    mac_perim_enter_by_mh+4()
    mac_perim_enter_by_macname+0x2c()
    dls_devnet_open+0x68()
    devnet_create_rvp+0xc()
    devnet_lookup+0x130()
    fop_lookup+0x104()
    lookuppnvp+0x370()
    lookuppnat+0x10c()
    lookupnameat+0x5c()
    vn_openat+0x104()
    copen+0x3a0()
    syscall_trap32+0xcc()

> 000002a1024da361::mutex
            ADDR  TYPE             HELD MINSPL OLDSPL WAITERS
000002a1024da361 adapt    2a1024dab7800      -      -      no


My mdb-foo is weak and doesn't allow me to get much beyond this.

Thanks for the quick reply.

-- 
Mike Gerdts
http://mgerdts.blogspot.com/
_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to