After ~3 days with the system up and running, the crash after doing
a "reboot" looks different. Now it's in handle_workitem_freeblocks(),
according to objdump
/sys/ufs/ffs/ffs_softdep.c:2365
120e: 48 8b 47 28 mov 0x28(%rdi),%rax
1212: 48 8b 80 98 02 00 00 mov 0x298(%rax),%rax
--> 1219: 48 83 78 18 01 cmpq $0x1,0x18(%rax)
121e: 48 8d 8d b8 fd ff ff lea 0xfffffffffffffdb8(%rbp),%rcx
1225: 48 89 4d 98 mov %rcx,0xffffffffffffff98(%rbp)
syncing disks...uvm_fault(0xfffffd83a1b78228, 0x18, 0, 1) -> e
kernel: page fault trap, code=0
Stopped at handle_workitem_freeblocks+0x39: cmpq $0x1,0x18(%rax)
ddb{0}> trace
handle_workitem_freeblocks(fffffd82b482bce8) at handle_workitem_freeblocks+0x39
process_worklist_item(ffff8000001b8800,40) at process_worklist_item+0x1f2
softdep_process_worklist(ffff8000001b8800) at softdep_process_worklist+0xed
softdep_flushworklist(ffff8000001b8800,ffff8000225ca708,ffff8000226deb00) at so
ftdep_flushworklist+0xb8
ffs_sync(ffff8000001b8800,1,0,fffffd841f7c26c0,ffff8000226deb00) at
ffs_sync+0xdd
dounmount_leaf(ffff8000001b8800,80000,ffff8000226deb00) at dounmount_leaf+0xaa
dounmount(ffff8000001b8800,80000,ffff8000226deb00) at dounmount+0xfc
vfs_unmountall() at vfs_unmountall+0x8e
vfs_shutdown(ffff8000226deb00) at vfs_shutdown+0x3b
boot(0) at boot+0x6c
reboot(0) at reboot+0x5c
sys_reboot(ffff8000226deb00,ffff8000225ca960,ffff8000225ca9c0) at
sys_reboot+0x7e
syscall(ffff8000225caa30) at syscall+0x389
Xsyscall() at Xsyscall+0x128
end of kernel
end trace frame: 0x7f7ffffdc410, count: -14
ddb{0}> ps
PID TID PPID UID S FLAGS WAIT COMMAND
*50794 484816 1 0 7 0x3 reboot
19349 244035 0 0 3 0x14200 bored smr
91090 149880 0 0 2 0x14200 zerothread
90933 308106 0 0 3 0x14200 aiodoned aiodoned
3559 3994 0 0 3 0x14200 syncer update
13412 220874 0 0 3 0x14200 cleaner cleaner
67192 445479 0 0 3 0x14200 reaper reaper
16869 348395 0 0 3 0x14200 pgdaemon pagedaemon
59176 404002 0 0 3 0x14200 bored crynlk
70887 377538 0 0 3 0x14200 bored crypto
59125 295509 0 0 3 0x14200 usbtsk usbtask
73888 331304 0 0 3 0x14200 usbatsk usbatsk
87760 317235 0 0 3 0x40014200 acpi0 acpi0
32435 334346 0 0 7 0x40014200 idle7
97709 444879 0 0 7 0x40014200 idle6
85595 223792 0 0 7 0x40014200 idle5
89353 449747 0 0 7 0x40014200 idle4
89616 53984 0 0 7 0x40014200 idle3
17444 112424 0 0 7 0x40014200 idle2
50503 439810 0 0 7 0x40014200 idle1
70433 274545 0 0 3 0x14200 bored sensors
58599 63095 0 0 3 0x14200 bored softnet
4228 56259 0 0 3 0x14200 bored systqmp
94385 233288 0 0 3 0x14200 bored systq
7159 306934 0 0 3 0x40014200 bored softclock
67585 249534 0 0 3 0x40014200 idle0
1 208459 0 0 3 0x82 wait init
0 0 -1 0 3 0x10200 scheduler swapper
ddb{0}> show registers
rdi 0xfffffd82b482bce8
rsi 0x40
rbp 0xffff8000225ca440
rbx 0x1
rdx 0xfe00000007ff1e3a
rcx 0x286
rax 0
r8 0x8
r9 0x1
r10 0xcbb4b964dc1cd4c3
r11 0xab8da676dd4aa070
r12 0x40
r13 0x9
r14 0xfffffd82b482bce8
r15 0xffff8000001b8800
rip 0xffffffff812b3589 handle_workitem_freeblocks+0x39
cs 0x8
rflags 0x10286 __ALIGN_SIZE+0xf286
rsp 0xffff8000225ca1f0
ss 0x10
handle_workitem_freeblocks+0x39: cmpq $0x1,0x18(%rax)
On 2020-02-29 10:01, Mark Patruck wrote:
On 2020-02-28 21:57, Todd C. Miller wrote:
This sounds like the loop in softdep_process_worklist() is never
exiting. It shouldn't run for more than a second, though.
FreeBSD breaks out of the loop if process_worklist_item() can't
make progress. You could try the following (untested) diff to see
if it changes the behavior.
After ~11h with your diff, the system was still up and running,
so i decided to reboot. It crashed while syncing disks.
syncing disks...uvm_fault(0xfffffd83a134d668, 0x20, 0, 1) -> e
kernel: page fault trap, code=0
Stopped at handle_workitem_freefile+0x2a: movq 0x20(%rax),%rcx
ddb{0}>
SNIP
--
Mark Patruck ( mark at wrapped.cx )
GPG key 0xF2865E51 / 187F F6D3 EE04 1DCE 1C74 F644 0D3C F66F F286 5E51
https://www.wrapped.cx