NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/60504: lfs_cleanerd can kernel crash on load in lfs_fcntl; lfs_sp == NULL
The following reply was made to PR kern/60504; it has been noted by GNATS.
From: Shinichi Doyashiki <clare%csel.org@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc:
Subject: Re: kern/60504: lfs_cleanerd can kernel crash on load in lfs_fcntl;
lfs_sp == NULL
Date: Wed, 09 Sep 2026 06:18:59 +0900
> > I bet this is just a matter of doing too much work in lfs with the
> > kernel lock held. I think this is going to require ripping the
> > band-aid that is the kernel lock off lfs, which we need to do anyway
> > sooner or later. Most of it is serialized by lfs_lock anyway. Try
> > the attached patch?
>
> Using relatively recent kernel code and the your patch,
> I was able to successfully complete `cvs update` and `build.sh`
> within a working directory on LFS.
>
> At the moment, I am testing using the userland cleaner daemon.
When I tried build.sh again, a deadlock was observed.
db{0}> show proc /a ffff9022a8487800
lwp_t ffff9022a8487800
find: pid 17999 proc ffff902040e570c0 vmspace/map ffff9025b8930200 flags 4000
lwp 17999 ffff9022a8487800 pcb ffffb989853db000
stat 3 flags 0 cpu 2 pri 37 ref 0
wmesg prelockcv wchan ffff902307c66228
db{0}> bt /a ffff9022a8487800
trace: pid 17999 lid 17999 at 0xffffb989853dfd30
sleepq_block() at netbsd:sleepq_block+0xea
cv_wait() at netbsd:cv_wait+0xca
lfs_prelock() at netbsd:lfs_prelock+0x51
lfs_itimes() at netbsd:lfs_itimes+0x3c9
lfs_close() at netbsd:lfs_close+0x81
VOP_CLOSE() at netbsd:VOP_CLOSE+0x40
vn_close() at netbsd:vn_close+0x34
closef() at netbsd:closef+0xa1
fd_close() at netbsd:fd_close+0xf3
sys_close() at netbsd:sys_close+0x22
syscall() at netbsd:syscall+0x9d
--- syscall (number 6) ---
netbsd:syscall+0x9d:
db{0}> show proc /a ffff902178766000
lwp_t ffff902178766000
system: pid 0 proc ffffffff81465040 vmspace/map ffffffff8155a2e0 flags 20002
lwp 169 [ioflush] ffff902178766000 pcb ffffb98946d5f000
stat 3 flags 240 cpu 1 pri 124 ref 0
wmesg prelockcv wchan ffff902307c66228
lwp 168 [pgdaemon] ffff9021783c0000 pcb ffffb98946b39000
stat 3 flags 200 cpu 0 pri 126 ref 0
wmesg pgdaemon wchan ffffffff814f5b68
lwp 165 [swwreboot] ffff902178439c00 pcb ffffb98946b87000
stat 3 flags 200 cpu 0 pri 43 ref 0
wmesg swwreboot wchan ffff902178347988
lwp 162 [npfgc0] ffff9021783c0800 pcb ffffb98946b40000
stat 3 flags 200 cpu 1 pri 96 ref 0
wmesg npfgcw wchan ffff902178286b88
lwp 161 [rt_free] ffff902178561800 pcb ffffb98946c28000
stat 3 flags 200 cpu 0 pri 43 ref 0
wmesg rt_free wchan ffff9021784abdc8
lwp 160 [unpgc] ffff902178561400 pcb ffffb98946c21000
stat 3 flags 200 cpu 0 pri 96 ref 0
wmesg unpgc wchan ffffffff81566450
lwp 95 [key_timehandler] ffff902178561000 pcb ffffb98946c1a000
stat 3 flags 200 cpu 3 pri 222 ref 0
wmesg key_timehandler wchan ffff9021784abc88
lwp 222 [icmp6_wqinput/3] ffff9021783c5c00 pcb ffffb98946c13000
stat 3 flags 200 cpu 3 pri 222 ref 0
wmesg icmp6_wqinput wchan ffff90217761b708
lwp 221 [icmp6_wqinput/2] ffff9021783c5800 pcb ffffb98946c0c000
stat 3 flags 200 cpu 2 pri 222 ref 0
wmesg icmp6_wqinput wchan ffff90217761b6c8
lwp 220 [icmp6_wqinput/1] ffff9021783c5400 pcb ffffb98946c05000
stat 3 flags 200 cpu 1 pri 222 ref 0
wmesg icmp6_wqinput wchan ffff90217761b688
lwp 219 [icmp6_wqinput/0] ffff9021783c5000 pcb ffffb98946bfe000
stat 3 flags 200 cpu 0 pri 222 ref 0
wmesg icmp6_wqinput wchan ffff90217761b648
lwp 218 [nd6_timer] ffff902178629c00 pcb ffffb98946bf7000
stat 3 flags 200 cpu 3 pri 222 ref 0
wmesg nd6_timer wchan ffff9021784abb48
lwp 217 [carp6_wqinput/3] ffff902178629800 pcb ffffb98946bf0000
stat 3 flags 200 cpu 3 pri 222 ref 0
wmesg carp6_wqinput wchan ffff90217761b308
lwp 216 [carp6_wqinput/2] ffff902178629400 pcb ffffb98946be9000
stat 3 flags 200 cpu 2 pri 222 ref 0
wmesg carp6_wqinput wchan ffff90217761b2c8
lwp 215 [carp6_wqinput/1] ffff902178629000 pcb ffffb98946be2000
stat 3 flags 200 cpu 1 pri 222 ref 0
wmesg carp6_wqinput wchan ffff90217761b288
lwp 214 [carp6_wqinput/0] ffff9021784cdc00 pcb ffffb98946bdb000
stat 3 flags 200 cpu 0 pri 222 ref 0
wmesg carp6_wqinput wchan ffff90217761b248
lwp 213 [carp_wqinput/3] ffff9021784cd800 pcb ffffb98946bd4000
stat 3 flags 200 cpu 3 pri 222 ref 0
wmesg carp_wqinput wchan ffff902178482f08
lwp 212 [carp_wqinput/2] ffff9021784cd400 pcb ffffb98946bcd000
stat 3 flags 200 cpu 2 pri 222 ref 0
wmesg carp_wqinput wchan ffff902178482ec8
lwp 211 [carp_wqinput/1] ffff9021784cd000 pcb ffffb98946bc6000
stat 3 flags 200 cpu 1 pri 222 ref 0
wmesg carp_wqinput wchan ffff902178482e88
lwp 210 [carp_wqinput/0] ffff902178531c00 pcb ffffb98946bbf000
stat 3 flags 200 cpu 0 pri 222 ref 0
wmesg carp_wqinput wchan ffff902178482e48
lwp 209 [icmp_wqinput/3] ffff902178531800 pcb ffffb98946bb8000
stat 3 flags 200 cpu 3 pri 222 ref 0
wmesg icmp_wqinput wchan ffff902178482b08
lwp 208 [icmp_wqinput/2] ffff902178531400 pcb ffffb98946bb1000
stat 3 flags 200 cpu 2 pri 222 ref 0
wmesg icmp_wqinput wchan ffff902178482ac8
lwp 207 [icmp_wqinput/1] ffff902178531000 pcb ffffb98946baa000
stat 3 flags 200 cpu 1 pri 222 ref 0
wmesg icmp_wqinput wchan ffff902178482a88
lwp 206 [icmp_wqinput/0] ffff9021784d5c00 pcb ffffb98946ba3000
stat 3 flags 200 cpu 0 pri 222 ref 0
wmesg icmp_wqinput wchan ffff902178482a48
lwp 205 [rt_timer] ffff9021784d5800 pcb ffffb98946b95000
stat 3 flags 200 cpu 2 pri 43 ref 0
wmesg rt_timer wchan ffff9021784aba08
lwp 204 [vmem_rehash] ffff9021784d5400 pcb ffffb98946b9c000
stat 3 flags 200 cpu 0 pri 125 ref 0
wmesg vmem_rehash wchan ffff9021784ab8c8
lwp 198 [usb0] ffff902178439800 pcb ffffb98946b80000
stat 3 flags 200 cpu 1 pri 96 ref 0
wmesg usbevt wchan ffff90217831d4c0
lwp 197 [usb1] ffff902178439400 pcb ffffb98946b79000
stat 3 flags 200 cpu 1 pri 96 ref 0
wmesg usbevt wchan ffff90217831d978
lwp 196 [coretemp3] ffff902178439000 pcb ffffb98946b72000
stat 3 flags 200 cpu 2 pri 43 ref 0
wmesg coretemp3 wchan ffff9021784ab508
lwp 195 [coretemp2] ffff90217849dc00 pcb ffffb98946b6b000
stat 3 flags 200 cpu 3 pri 43 ref 0
wmesg coretemp2 wchan ffff9021784ab148
lwp 194 [coretemp1] ffff90217849d800 pcb ffffb98946b64000
stat 3 flags 200 cpu 2 pri 43 ref 0
wmesg coretemp1 wchan ffff90217836fec8
lwp 193 [coretemp0] ffff90217849d400 pcb ffffb98946b5d000
stat 3 flags 200 cpu 3 pri 43 ref 0
wmesg coretemp0 wchan ffff90217836fd88
lwp 192 [acpitz0] ffff90217849d000 pcb ffffb98946b56000
stat 3 flags 200 cpu 2 pri 43 ref 0
wmesg acpitz0 wchan ffff90217836fc48
lwp 122 [entbutler] ffff902177cb2c00 pcb ffffb98936b30000
stat 3 flags 200 cpu 1 pri 43 ref 0
wmesg entropy wchan ffffffff8148d630
lwp 121 [usbtask-dr] ffff902177cb2800 pcb ffffb98936b29000
stat 3 flags 200 cpu 0 pri 96 ref 0
wmesg usbtsk wchan ffffffff814b2e58
lwp 120 [usbtask-hc] ffff902177cb2400 pcb ffffb98936b22000
stat 3 flags 200 cpu 2 pri 96 ref 0
wmesg usbtsk wchan ffffffff814b2e18
lwp 119 [wm0Reset] ffff902177cb2000 pcb ffffb98936aeb000
stat 3 flags 200 cpu 3 pri 222 ref 0
wmesg wm0Reset wchan ffff9021773d0ac8
lwp 118 [wm0TxRx/3] ffff902177cd6c00 pcb ffffb98936ae4000
stat 3 flags 200 cpu 3 pri 222 ref 0
wmesg wm0TxRx wchan ffff9028afa90908
lwp 117 [wm0TxRx/2] ffff902177cd6800 pcb ffffb98936add000
stat 3 flags 200 cpu 2 pri 222 ref 0
wmesg wm0TxRx wchan ffff9028afa908c8
lwp 116 [wm0TxRx/1] ffff902177cd6400 pcb ffffb98936ad6000
stat 3 flags 200 cpu 1 pri 222 ref 0
wmesg wm0TxRx wchan ffff9028afa90888
lwp 115 [wm0TxRx/0] ffff902177cd6000 pcb ffffb98936acf000
stat 3 flags 200 cpu 0 pri 222 ref 0
wmesg wm0TxRx wchan ffff9028afa90848
lwp 114 [igc0_tx_rx/3] ffff902177b76c00 pcb ffffb98936a84000
stat 3 flags 200 cpu 3 pri 222 ref 0
wmesg igc0_tx_rx wchan ffff9028afa90708
lwp 113 [igc0_tx_rx/2] ffff902177b76800 pcb ffffb98936a7d000
stat 3 flags 200 cpu 2 pri 222 ref 0
wmesg igc0_tx_rx wchan ffff9028afa906c8
lwp 112 [igc0_tx_rx/1] ffff902177b76400 pcb ffffb98936a76000
stat 3 flags 200 cpu 1 pri 222 ref 0
wmesg igc0_tx_rx wchan ffff9028afa90688
lwp 111 [igc0_tx_rx/0] ffff902177b76000 pcb ffffb98936a6f000
stat 3 flags 200 cpu 0 pri 222 ref 0
wmesg igc0_tx_rx wchan ffff9028afa90648
lwp 110 [atabus1] ffff9021772b7c00 pcb ffffb98936946000
stat 3 flags 200 cpu 3 pri 96 ref 0
wmesg atath wchan ffffb98042f3cbe0
lwp 109 [atabus0] ffff9021772b7800 pcb ffffb9893693b000
stat 3 flags 240 cpu 2 pri 96 ref 0
wmesg atath wchan ffffb98042f3c3f0
lwp 107 [xcall/3] ffff9021772b7000 pcb ffffb989364f0000
stat 3 flags 200 cpu 3 pri 127 ref 0
wmesg xcall wchan ffffb989364bc010
lwp 106 [softser/3] ffff9021772dbc00 pcb ffffb989364e9000
stat 1 flags 200 cpu 3 pri 223 ref 0
lwp 105 [softclk/3] ffff9021772db800 pcb ffffb989364e2000
stat 1 flags 200 cpu 3 pri 220 ref 0
lwp 104 [softbio/3] ffff9021772db400 pcb ffffb989364db000
stat 1 flags 200 cpu 3 pri 221 ref 0
lwp 103 [softnet/3] ffff9021772db000 pcb ffffb989364d4000
stat 1 flags 200 cpu 3 pri 222 ref 0
> lwp 102 [idle/3] ffff90217722cc00 pcb ffffb989364c5000
stat 1 flags 201 cpu 3 pri 0 ref 0
lwp 101 [xcall/2] ffff90217722c800 pcb ffffb989364b3000
stat 3 flags 200 cpu 2 pri 127 ref 0
wmesg xcall wchan ffffb9893647f010
lwp 100 [softser/2] ffff90217722c400 pcb ffffb989364ac000
stat 1 flags 200 cpu 2 pri 223 ref 0
lwp 99 [softclk/2] ffff90217722c000 pcb ffffb989364a5000
stat 1 flags 200 cpu 2 pri 220 ref 0
lwp 98 [softbio/2] ffff90217717bc00 pcb ffffb9893649e000
stat 1 flags 200 cpu 2 pri 221 ref 0
lwp 97 [softnet/2] ffff90217717b800 pcb ffffb98936497000
stat 1 flags 200 cpu 2 pri 222 ref 0
> lwp 96 [idle/2] ffff90217717b400 pcb ffffb98936488000
stat 1 flags 201 cpu 2 pri 0 ref 0
lwp 30 [xcall/1] ffff90217717b000 pcb ffffb98936474000
stat 3 flags 200 cpu 1 pri 127 ref 0
wmesg xcall wchan ffffb98935da0010
lwp 29 [softser/1] ffff90217715fc00 pcb ffffb9893646d000
stat 1 flags 200 cpu 1 pri 223 ref 0
lwp 28 [softclk/1] ffff90217715f800 pcb ffffb98936466000
stat 1 flags 200 cpu 1 pri 220 ref 0
lwp 27 [softbio/1] ffff90217715f400 pcb ffffb9893645f000
stat 1 flags 200 cpu 1 pri 221 ref 0
lwp 26 [softnet/1] ffff90217715f000 pcb ffffb98936458000
stat 1 flags 200 cpu 1 pri 222 ref 0
> lwp 25 [idle/1] ffff9028afa4ec00 pcb ffffb98935da9000
stat 1 flags 201 cpu 1 pri 0 ref 0
lwp 24 [lnxsyswq] ffff9028afa4e800 pcb ffffb989363d2000
stat 3 flags 200 cpu 0 pri 43 ref 0
wmesg lnxsyswq wchan ffff9028b4b81e08
lwp 23 [lnxubdwq] ffff9028afa4e400 pcb ffffb989363cb000
stat 3 flags 200 cpu 0 pri 43 ref 0
wmesg lnxubdwq wchan ffff9028b4b81d08
lwp 22 [lnxpwrwq] ffff9028afa4e000 pcb ffffb989363c4000
stat 3 flags 200 cpu 0 pri 43 ref 0
wmesg lnxpwrwq wchan ffff9028b4b81c08
lwp 21 [lnxlngwq] ffff9028afa77c00 pcb ffffb989363bd000
stat 3 flags 200 cpu 0 pri 43 ref 0
wmesg lnxlngwq wchan ffff9028b4b81b08
lwp 20 [lnxhipwq] ffff9028afa77800 pcb ffffb989363b6000
stat 3 flags 200 cpu 2 pri 43 ref 0
wmesg lnxhipwq wchan ffff9028b4b81a08
lwp 19 [lnxrcugc] ffff9028afa77400 pcb ffffb989363af000
stat 3 flags 200 cpu 0 pri 43 ref 0
wmesg lnxrcugc wchan ffffffff8148bb08
lwp 18 [sysmon] ffff9028afa77000 pcb ffffb989363a8000
stat 3 flags 200 cpu 1 pri 96 ref 0
wmesg smtaskq wchan ffffffff814d3ff0
lwp 17 [pmfsuspend] ffff9028afa91c00 pcb ffffb989363a1000
stat 3 flags 200 cpu 0 pri 43 ref 0
wmesg pmfsuspend wchan ffff9028b3b34948
lwp 16 [pmfevent] ffff9028afa91800 pcb ffffb9893639a000
stat 3 flags 200 cpu 0 pri 43 ref 0
wmesg pmfevent wchan ffff9028b3b34808
lwp 15 [sopendfree] ffff9028afa91400 pcb ffffb98936393000
stat 3 flags 200 cpu 0 pri 96 ref 0
wmesg sopendfr wchan ffffffff815663d0
lwp 14 [ifwdog] ffff9028afa91000 pcb ffffb9893638c000
stat 3 flags 200 cpu 2 pri 222 ref 0
wmesg ifwdog wchan ffff9028b3b346c8
lwp 13 [iflnkst] ffff9028b0ab7c00 pcb ffffb98936385000
stat 3 flags 200 cpu 2 pri 222 ref 0
wmesg iflnkst wchan ffff9028b3b34588
lwp 12 [lfsswq] ffff9028b0ab7800 pcb ffffb9893637e000
stat 3 flags 200 cpu 1 pri 123 ref 0
wmesg lfsswq wchan ffff9028b3b34448
lwp 11 [lfscwq] ffff9028b0ab7400 pcb ffffb98936377000
stat 3 flags 200 cpu 0 pri 123 ref 0
wmesg lfscwq wchan ffff9028b3b34308
lwp 10 [nfssilly] ffff9028b0ab7000 pcb ffffb98936370000
stat 3 flags 200 cpu 0 pri 43 ref 0
wmesg nfssilly wchan ffff9028b3b341c8
lwp 9 [pooldisp] ffff9028b3ae9c00 pcb ffffb98936369000
stat 3 flags 200 cpu 2 pri 43 ref 0
wmesg pooldisp wchan ffff9028b4b81728
lwp 8 [modunload] ffff9028b3ae9800 pcb ffffb98936362000
stat 3 flags 200 cpu 0 pri 125 ref 0
wmesg mod_unld wchan ffffffff815593b0
lwp 7 [xcall/0] ffff9028b3ae9400 pcb ffffb9893635b000
stat 3 flags 200 cpu 0 pri 127 ref 0
wmesg xcall wchan ffffffff8143cf10
lwp 6 [softser/0] ffff9028b3ae9000 pcb ffffb98936354000
stat 1 flags 200 cpu 0 pri 223 ref 0
lwp 5 [softclk/0] ffff9028b3b21c00 pcb ffffb9893634d000
stat 1 flags 200 cpu 0 pri 220 ref 0
lwp 4 [softbio/0] ffff9028b3b21800 pcb ffffb98936346000
stat 1 flags 200 cpu 0 pri 221 ref 0
lwp 3 [softnet/0] ffff9028b3b21400 pcb ffffb9893633f000
stat 1 flags 200 cpu 0 pri 222 ref 0
> lwp 2 [idle/0] ffff9028b3b21000 pcb ffffb98936330000
stat 1 flags 201 cpu 0 pri 0 ref 0
lwp 0 [swapper] ffffffff814648c0 pcb ffffffff818a3000
stat 3 flags 200 cpu 3 pri 125 ref 0
wmesg uvm wchan ffffffff814648c0
db{0}> bt /a ffff902178766000
trace: pid 0 lid 169 at 0xffffb98946d63e30
sleepq_block() at netbsd:sleepq_block+0xea
cv_wait() at netbsd:cv_wait+0xca
lfs_prelock() at netbsd:lfs_prelock+0x51
lfs_seglock() at netbsd:lfs_seglock+0x16
lfs_segwrite() at netbsd:lfs_segwrite+0x71
lfs_sync() at netbsd:lfs_sync+0xc6
VFS_SYNC() at netbsd:VFS_SYNC+0x22
sched_sync() at netbsd:sched_sync+0xd6
db{0}> show proc /a ffff90217fe78800
lwp_t ffff90217fe78800
lfs_cleanerd: pid 6449 proc ffff90218cd25840 vmspace/map ffff90217b132740 flags
0
lwp 6449 ffff90217fe78800 pcb ffffb98946df7000
stat 3 flags 180 cpu 2 pri 43 ref 0
wmesg segment wchan ffffffff814f3840
db{0}> bt /a ffff90217fe78800
trace: pid 6449 lid 6449 at 0xffffb98946dfbd00
sleepq_block() at netbsd:sleepq_block+0x233
cv_timedwait_sig() at netbsd:cv_timedwait_sig+0xda
lfs_segwait() at netbsd:lfs_segwait+0x5c
lfs_fcntl() at netbsd:lfs_fcntl+0x76c
VOP_FCNTL() at netbsd:VOP_FCNTL+0x46
sys_fcntl() at netbsd:sys_fcntl+0x461
syscall() at netbsd:syscall+0x9d
--- syscall (number 92) ---
netbsd:syscall+0x9d:
db{0}> show proc /a ffff90204263b400
lwp_t ffff90204263b400
nbinstallboot: pid 9544 proc ffff90263e24f500 vmspace/map ffff90249bdce580 flags
4000
lwp 9544 ffff90204263b400 pcb ffffb989470f4000
stat 3 flags 0 cpu 2 pri 31 ref 0
wmesg seg_iocount wchan ffff9024d483c0dc
db{0}> bt /a ffff90204263b400
trace: pid 9544 lid 9544 at 0xffffb989470f8c40
sleepq_block() at netbsd:sleepq_block+0xea
mtsleep() at netbsd:mtsleep+0x11f
lfs_segunlock() at netbsd:lfs_segunlock+0x1d9
lfs_segwrite() at netbsd:lfs_segwrite+0x531
lfs_flush_fs() at netbsd:lfs_flush_fs+0x7c
lfs_putpages() at netbsd:lfs_putpages+0x36d
VOP_PUTPAGES() at netbsd:VOP_PUTPAGES+0x43
lfs_fsync() at netbsd:lfs_fsync+0xf4
VOP_FSYNC() at netbsd:VOP_FSYNC+0x47
sys_fsync() at netbsd:sys_fsync+0x5f
syscall() at netbsd:syscall+0x9d
--- syscall (number 95) ---
netbsd:syscall+0x9d:
Home |
Main Index |
Thread Index |
Old Index