Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

unexplained hang



Feb 18 10:45 GMT 4.99.54/i386 kernel, without debug/diagnostic/lockdebug (as
kernels built with those options seem to be fine), on a hyperthreading P4,
all hung during a little peak in disk access, though ddb was happy.

Is it a problem for a v_interlock to be zero after a mutex_enter?

I hope I reached the right conclusion in the attachment, cf
sys/ufs/ufs/ufs_readwrite.c:WRITE(), every VOP_PUTPAGES is preceded by a
mutex_enter(&vp->v_interlock);
sys/vnode.h:
#define v_interlock     v_uobj.vmobjlock
struct vnode {
        struct uvm_object v_uobj;               /* i: the VM object */
...
uvm/uvm_object.:
struct uvm_object {
        kmutex_t                vmobjlock;      /* lock on memq */
...
and vmobjlock=0?

Cheers,

Patrick
Stopped in pid 0.4 (system) at  netbsd:breakpoint+0x4:  popl    %ebp
db{0}> ps
 PID           PPID     PGRP        UID S   FLAGS LWPS          COMMAND    WAIT
 28957        18609     4774       2171 2  0x4000    1               rm
 18609          519     4774       2171 2  0x4000    1              ksh   pause
 519          23459     4774       2171 2  0x4000    1               sh    wait
 11467         1900    11467       2171 2  0x4000    1              csh     tty
 1900             1     4616       2171 2  0x4100    1            xterm  select
 21555         6862    21555       2171 2  0x4000    1             psql     tty
 6862         14488     6862       2171 2  0x4000    1              csh   pause
 14488            1     4616       2171 2  0x4100    1            xterm  select
 5337         12837     5337       2171 2  0x4000    1             lynx     tty
 12837         1158    12837       2171 2  0x4000    1              csh   pause
 1158             1     4616       2171 2  0x4100    1            xterm  select
 23459        25440     4774       2171 2  0x4000    1              ksh   pause
 25440        12670     4774       2171 2  0x4000    1            gmake    wait
 12670         8137     4774       2171 2  0x4000    1              ksh   pause
 8137          7498     4774       2171 2  0x4000    1            gmake    wait
 7498          5343     4774       2171 2       0    1              ksh   pause
 5343          4774     4774       2171 2  0x4000    1              ksh   pause
 4774         12909     4774       2171 2  0x4000    1            gmake    wait
 25870         6665     9376       2171 2  0x4001    1      firefox-bin  select
 6665          9376     9376       2171 2  0x4000    1               sh    wait
 9376             1     9376       2171 2  0x4000    1               sh    wait
 14967        10647    14967       2171 2  0x4000    1              csh     tty
 10647            1     4616       2171 2  0x4100    1            xterm  select
 7668         18338     7668       2171 2  0x4000    1              csh     tty
 18338            1     4616       2171 2  0x4100    1            xterm  select
 3945           283      283        143 2  0x4001    1            imapd
 9385          3492     9385       2171 2  0x4000    1             mutt   netio
 3492            60     3492       2171 2  0x4000    1              csh   pause
 60               1     4616       2171 2  0x4100    1            xterm  select
 2605         15986    15986      32767 2   0x100    1            httpd semwait
 4491         15986    15986      32767 2   0x100    1            httpd semwait
 2329         15986    15986      32767 2   0x100    1            httpd semwait
 12917        15986    15986      32767 2   0x100    1            httpd semwait
 659          15986    15986      32767 2   0x100    1            httpd
 12410        15986    15986      32767 2   0x100    1            httpd semwait
 24103        15986    15986      32767 2   0x100    1            httpd
 28998        15986    15986      32767 2   0x100    1            httpd semwait
 15986            1    15986          0 2       0    1            httpd  select
 12909        12368    12909       2171 2  0x4000    1              csh   pause
 12368            1     4616       2171 2  0x4100    1            xterm  select
 5296             1     4616       2171 2  0x4000    1           xclock  select
 5629             1     4616       2171 2  0x4000    1          smproxy  select
 4325             1     4616       2171 2  0x4000    1              twm  select
 4616          2376     4616       2171 2  0x4000    1              xsm  select
 2376           324     2376          0 2       0    1              xdm    wait
 619            431      431       2171 2       0    1            dnetc
 478              1      478          0 2  0x4000    1            getty     tty
 497              1      497          0 2  0x4000    1            getty     tty
 348              1      348          0 2  0x4000    1            getty     tty
 443              1      443          0 2  0x4000    1            getty     tty
 633              1      633          0 2  0x4000    1            getty     tty
 442              1      442          0 2  0x4000    1            getty     tty
 216              1      216          0 2  0x4000    1            getty     tty
 597            401      327        104 2  0x4101    1      exim-4.66-1    pipe
 431              1      431       2171 2  0x4000    1            dnetc
 401            327      327          0 2       0    1             cron    pipe
 327              1      327          0 2       0    1             cron nanoslp
 575              1      575          0 2       0    1            inetd  kqread
 573              1        2          0 2  0x4000    1            NeMaC nanoslp
 368              1        2          0 2  0x4000    1           NeMaC2 nanoslp
 333              1      333          0 2       0    1             sshd  select
 340            324      340          0 2  0x4000    1          XFree86
 324              1      324          0 2     0x1    1              xdm   pause
 302              1      302          0 2       0    1             ntpd
 252              1      252          0 2       0    1              lpd  select
 283              1      283        143 2   0x101    1           master  select
 272              1      272        104 2   0x100    1      exim-4.66-1
 266              1      266          0 2       0    1            dhcpd
 231              1      231          0 2       0    5             nfsd       *
 227              1      227          0 2       0    1           mountd  select
 120              1      120          0 2       0    1          rpcbind  select
 150              1      150          0 2       0    1           racoon  select
 133              1      133          0 2       0    1          syslogd
 1                0        1          0 2  0x4001    1             init    wait
>0               -1        0          0 2 0x20002   38           system       *
 463            401      463       2171 5  0x4000    1               sh
db{0}> bt
breakpoint(c03c8176,8,cc878fec,c01eb62e,0) at netbsd:breakpoint+0x4
cpu_Debugger(0,3f8,5,c0326084,c05f65cc) at netbsd:cpu_Debugger+0xb
comintr(c2d7e600,cc7ddc00,0,0,0) at netbsd:comintr+0x17f
DDB lost frame for netbsd:Xintr_ioapic_edge4+0xa9, trying 0xcc878ff4
Xintr_ioapic_edge4() at netbsd:Xintr_ioapic_edge4+0xa9
--- interrupt ---
--- switch to interrupt stack ---
x86_pause(d4470758,5086960,cc7ddcf0,c0372506,cc7ddc05) at netbsd:x86_pause+0x2
biodone2(c365d008,7,0,c05b6c00,c365d008) at netbsd:biodone2+0x30
biointr(0,cc086d20,0,c03bc0b9,cc7ddda0) at netbsd:biointr+0x6f
softint_execute(cc07c004,cc086960,2,d0950010,cc080010) at netbsd:softint_execute
+0x8b
softint_dispatch(cd77e4a0,2,0,0,0) at netbsd:softint_dispatch+0x92
DDB lost frame for netbsd:Xsoftintr+0x3d, trying 0xcc7ddd88
Xsoftintr() at netbsd:Xsoftintr+0x3d
--- interrupt ---
uvm_fault(0xc0610860, 0, 1) -> 0xe
kernel: supervisor trap page fault, code=0
Faulted in DDB; continuing...
db{0}> mach cpu 0
using CPU 0
db{0}> bt
breakpoint(c03c8176,8,cc878fec,c01eb62e,0) at netbsd:breakpoint+0x4
cpu_Debugger(0,3f8,5,c0326084,c05f65cc) at netbsd:cpu_Debugger+0xb
comintr(c2d7e600,cc7ddc00,0,0,0) at netbsd:comintr+0x17f
DDB lost frame for netbsd:Xintr_ioapic_edge4+0xa9, trying 0xcc878ff4
Xintr_ioapic_edge4() at netbsd:Xintr_ioapic_edge4+0xa9
--- interrupt ---
--- switch to interrupt stack ---
x86_pause(d4470758,5086960,cc7ddcf0,c0372506,cc7ddc05) at netbsd:x86_pause+0x2
biodone2(c365d008,7,0,c05b6c00,c365d008) at netbsd:biodone2+0x30
biointr(0,cc086d20,0,c03bc0b9,cc7ddda0) at netbsd:biointr+0x6f
softint_execute(cc07c004,cc086960,2,d0950010,cc080010) at netbsd:softint_execute
+0x8b
softint_dispatch(cd77e4a0,2,0,0,0) at netbsd:softint_dispatch+0x92
DDB lost frame for netbsd:Xsoftintr+0x3d, trying 0xcc7ddd88
Xsoftintr() at netbsd:Xsoftintr+0x3d
--- interrupt ---
uvm_fault(0xc0610860, 0, 1) -> 0xe
kernel: supervisor trap page fault, code=0
Faulted in DDB; continuing...
db{0}> mach cpu 1
using CPU 1
db{0}> bt
x86_pause(c1d8e708,40,0,0,cd7cf744) at netbsd:x86_pause+0x2
uvn_findpage(d4470758,110dc000,0,cd7cf924,13) at netbsd:uvn_findpage+0x1b1
uvn_findpages(d4470758,110d1000,0,cd7cf938,cd7cf8f8) at netbsd:uvn_findpages+0xd
6
genfs_do_putpages(d4470758,110d0000,0,110e0000,0) at netbsd:genfs_do_putpages+0x
99b
genfs_putpages(cd7cfa08,c02a97b6,cd7cfa2c,c02c7c51,d4470758) at netbsd:genfs_put
pages+0x51
VOP_PUTPAGES(d4470758,110d0000,0,110e0000,0) at netbsd:VOP_PUTPAGES+0x94
ffs_write(cd7cfc00,17cfda0,cd7cfc1c,c0386078,d4470758) at netbsd:ffs_write+0xc62

VOP_WRITE(d4470758,cd7cfc6c,10,cc084d80,d4470758) at netbsd:VOP_WRITE+0x70
vn_write(cd8ed640,cd8ed664,cd7cfc6c,cc084d80,1) at netbsd:vn_write+0x131
dofilewrite(f,cd8ed640,8f308000,4000,cd8ed664) at netbsd:dofilewrite+0x8c
sys_write(ceb03220,cd7cfd04,cd7cfcfc,cd7cfd10,c03bbeb4) at netbsd:sys_write+0xc1

syscall(cd7cfd48,81100b3,bb8300ab,bfbf001f,9d82001f) at netbsd:syscall+0x157
db{0}> examine/x d4470758,41
0xd4470758:     ceb03220    c04f2378    c0ce2074    c0f103e4    110e0       1
0xd4470770:     c04fb9ee    0           110e0000    0           110e0000    0
0xd4470788:     4000        30          2000000     1e8         1           7
0xd44707a0:     13          cd4302d8    c2c4dc00    d030ed48    c05b55c0    0
0xd44707b8:     0           d2f50880    0           c41bbc30    d2f50820    d01d
2e08    0           0           0           1           1           ceb03224
0xd44707e8:     0           0           d44707e4    d4471bf8    0           0
0xd4470800:     c04f2378    0           d4470804    0           0           c04f
b9ee    0           150e        0           150e        0           0
0xd4470830:     30          2000000     0           0           0           19
0xd4470848:     cd4302d8    c2c4dc00    cf637744    d18bd988    c05b55c0
db{0}> #define v_interlock     v_uobj.vmobjlock
?
db{0}> examine/x ceb03220,5
0xceb03220:     0           c05f89e8    0           c2995000    cc078840
db{0}> sync
syncing disks... bge0: watchdog timeout -- resetting
bge0: watchdog timeout -- resetting
bge0: watchdog timeout -- resetting
arp_drain: locked; punting
arp_drain: locked; punting
arp_drain: locked; punting
bge0: watchdog timeout -- resetting
bge0: watchdog timeout -- resetting
bge0: watchdog timeout -- resetting
bge0: watchdog timeout -- resetting
bge0: watchdog timeout -- resetting
ahc0: Timedout SCB already complete. Interrupts may not be functioning.


Home | Main Index | Thread Index | Old Index