NetBSD-Bugs archive

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

kern/60811: build.sh on LFS can enter deadlock



>Number:         60811
>Category:       kern
>Synopsis:       build.sh on LFS can enter deadlock
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Sep 27 06:50:00 +0000 2026
>Originator:     Shinichi Doyashiki
>Release:        11.99.8 around 2026-09-26 16:00 JST
>Organization:
at home
>Environment:
NetBSD kanade2.hq.csel.org 11.99.8 NetBSD 11.99.8 (KANADE2_12) #25: Sun Sep 27 13:20:24 JST 2026  clare%kanade2.hq.csel.org@localhost:/export/netbsd/debuglfs/src/sys/arch/amd64/compile/KANADE2_12 amd64
>Description:
build.sh on LFS can enter deadlock

Running build.sh on an LFS filesystem eventually deadlocked.
Reproducibility is currently unknown.

db{0}> show all locks
PID     LID CPU       STRUCT LWP *              OWNER BITS LOCK
10068 10068   0   ffff8f6624747400   ffff8f662203e000    7 ffff8f66103f2280  #sh
8006   8006   0   ffff8f662203e000   ffff8f662203e400    2 netbsd:lfs_lock   #sh
10375 10375   2   ffff8f661f8fb000   ffff8f662203e000    7 ffff8f66103f2280  #sh
9398   9398   1   ffff8f662203e800   ffff8f662203e400    2 netbsd:lfs_lock   #nbmake
10074 10074   2   ffff8f662203e400                 20    3 ffff8f65f94e02b8  #nbmake
4551   4551   1   ffff8f65fb6c8800   ffff8f662203e400    2 netbsd:lfs_lock   #lfs_cleanerd
0      4024   2   ffff8f65ffd2a400   ffff8f662203e400    2 netbsd:lfs_lock   #lfs_writer
0       169   3   ffff8f65f863b000   ffff8f662203e400    2 netbsd:lfs_lock   #ioflush

db{0}> ps
PID     LID S CPU     FLAGS       STRUCT LWP *               NAME WAIT
10068 10068 3   0         0   ffff8f6624747400                 sh rwlock
8006   8006 3   0         0   ffff8f662203e000                 sh mutex
10375 10375 3   2         0   ffff8f661f8fb000                 sh rwlock
9398   9398 3   1         0   ffff8f662203e800             nbmake mutex
10074 10074 3   2         0   ffff8f662203e400             nbmake rwlock
4551   4551 3   1         0   ffff8f65fb6c8800       lfs_cleanerd mutex
0      4024 3   2       240   ffff8f65ffd2a400         lfs_writer mutex
0       169 3   3       240   ffff8f65f863b000            ioflush mutex

nbmake

db{0}> show proc /a ffff8f662203e400
lwp_t ffff8f662203e400
nbmake: pid 10074 proc ffff8f661a1e7c40 vmspace/map ffff8f65fa823c80 flags 4000
  lwp 10074 ffff8f662203e400 pcb ffffa18957035000
    stat 3 flags 0 cpu 2 pri 39 ref 0
    wmesg rwlock wchan ffff8f65f94e02b8

db{0}> bt /a ffff8f662203e400
trace: pid 10074 lid 10074 at 0xffffa18957039c50
sleepq_block() at netbsd:sleepq_block+0xea
turnstile_block() at netbsd:turnstile_block+0x24b
rw_vector_enter() at netbsd:rw_vector_enter+0x161
lfs_prelock() at netbsd:lfs_prelock+0x86
lfs_itimes() at netbsd:lfs_itimes+0x3c9
lfs_close() at netbsd:lfs_close+0x81
VOP_CLOSE() at netbsd:VOP_CLOSE+0xa0
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:

sh

db{0}> show proc /a ffff8f662203e000
lwp_t ffff8f662203e000
sh: pid 8006 proc ffff8f6624017c00 vmspace/map ffff8f65fbbaee40 flags 4000
  lwp 8006 ffff8f662203e000 pcb ffffa1895dff7000
    stat 3 flags 0 cpu 0 pri 39 ref 0
    wmesg mutex wchan ffffffff814e9778

db{0}> bt /a ffff8f662203e000
trace: pid 8006 lid 8006 at 0xffffa1895dffb760
sleepq_block() at netbsd:sleepq_block+0xea
turnstile_block() at netbsd:turnstile_block+0x24b
mutex_vector_enter() at netbsd:mutex_vector_enter+0x13f
lfs_strategy() at netbsd:lfs_strategy+0x7a
VOP_STRATEGY() at netbsd:VOP_STRATEGY+0x64
bio_doread() at netbsd:bio_doread+0x5f
bread() at netbsd:bread+0x18
lfs_loadvnode() at netbsd:lfs_loadvnode+0x2b2
vcache_get() at netbsd:vcache_get+0x1cf
ulfs_lookup() at netbsd:ulfs_lookup+0xc47
VOP_LOOKUP() at netbsd:VOP_LOOKUP+0x83
lookup_once() at netbsd:lookup_once+0x1aa
namei_tryemulroot() at netbsd:namei_tryemulroot+0x11a5
namei() at netbsd:namei+0x2d
fd_nameiat.isra.0() at netbsd:fd_nameiat.isra.0+0x95
do_sys_statat() at netbsd:do_sys_statat+0x87
sys___stat50() at netbsd:sys___stat50+0x28
syscall() at netbsd:syscall+0x9d
--- syscall (number 439) ---
netbsd:syscall+0x9d:

sh

db{0}> show proc /a ffff8f6624747400
lwp_t ffff8f6624747400
sh: pid 10068 proc ffff8f6620207400 vmspace/map ffff8f65fb674900 flags 0
  lwp 10068 ffff8f6624747400 pcb ffffa1895b6c0000
    stat 3 flags 0 cpu 0 pri 39 ref 0
    wmesg rwlock wchan ffff8f66103f2280

db{0}> bt /a ffff8f6624747400
trace: pid 10068 lid 10068 at 0xffffa1895b6c49c0
sleepq_block() at netbsd:sleepq_block+0xea
turnstile_block() at netbsd:turnstile_block+0x24b
rw_vector_enter() at netbsd:rw_vector_enter+0x161
genfs_lock() at netbsd:genfs_lock+0x89
VOP_LOCK() at netbsd:VOP_LOCK+0xf8
vn_lock() at netbsd:vn_lock+0xb0
lookup_once() at netbsd:lookup_once+0x19c
namei_tryemulroot() at netbsd:namei_tryemulroot+0x11a5
namei() at netbsd:namei+0x2d
fd_nameiat.isra.0() at netbsd:fd_nameiat.isra.0+0x95
do_sys_statat() at netbsd:do_sys_statat+0x87
sys___stat50() at netbsd:sys___stat50+0x28
syscall() at netbsd:syscall+0x9d
--- syscall (number 439) ---
netbsd:syscall+0x9d:

lfs_cleanerd

db{0}> show proc /a ffff8f65fb6c8800
lwp_t ffff8f65fb6c8800
lfs_cleanerd: pid 4551 proc ffff8f65f97c9480 vmspace/map ffff8f65fc293040 flags 
0
  lwp 4551 ffff8f65fb6c8800 pcb ffffa1894710f000
    stat 3 flags 0 cpu 1 pri 29 ref 0
    wmesg mutex wchan ffffffff814e9778

db{0}> bt /a ffff8f65fb6c8800
trace: pid 4551 lid 4551 at 0xffffa18947113c70
sleepq_block() at netbsd:sleepq_block+0xea
turnstile_block() at netbsd:turnstile_block+0x24b
mutex_vector_enter() at netbsd:mutex_vector_enter+0x13f
lfs_fcntl() at netbsd:lfs_fcntl+0xa46
VOP_FCNTL() at netbsd:VOP_FCNTL+0x6e
sys_fcntl() at netbsd:sys_fcntl+0xa05
syscall() at netbsd:syscall+0x9d
--- syscall (number 92) ---
netbsd:syscall+0x9d:

db{0}> bt /a ffff8f65ffd2a400
trace: pid 0 lid 4024 at 0xffffa1894ea2be60
sleepq_block() at netbsd:sleepq_block+0xea
turnstile_block() at netbsd:turnstile_block+0x24b
mutex_vector_enter() at netbsd:mutex_vector_enter+0x13f
cv_timedwait() at netbsd:cv_timedwait+0xde
lfs_writerd() at netbsd:lfs_writerd+0x3ad

>How-To-Repeat:
repeat run of build.sh on LFS.

size of the LFS I used is around 40GiB; userland cleaner was used.
this deadlock did not require interaction with lfs_cleanerd, may be.

>Fix:
unknown




Home | Main Index | Thread Index | Old Index