On 10.8.2022. 0:49, Vitaliy Makkoveev wrote:
> That's strange, because after we the only timeout handlers can reschedule
> pflow_output_process to run, but they have no sleep points. However the
> task handler still running after taskq_del_barrier(9).
>
> Does this help?
Hi,
this diff doesn't help. Here's output
r620-1# ifconfig pflow0 destroy
kernel: protection fault trap, code=0
Stopped at sblock+0x35: movq 0x8(%rax),%rax
ddb{4}> show panic
the kernel did not panic
ddb{4}> trace
sblock(fffffd83b34818e8,fffffd83b3481a10,1) at sblock+0x35
sosend(fffffd83b34818e8,fffffd80cd292d00,0,fffffd80a3b4e200,0,0) at
sosend+0x163
pflow_output_process(ffff8000008ca000) at pflow_output_process+0x67
taskq_thread(ffff800000030100) at taskq_thread+0x100
end trace frame: 0x0, count: -4
ddb{4}>
ddb{4}> show reg
rdi 0xfffffd83b34818e8
rsi 0xfffffd83b3481a10
rbp 0xffff800022d66160
rbx 0x501
rdx 0x1
rcx 0xffff8000ffffe004
rax 0x12197a31cb9f19c7
r8 0x1
r9 0xffffffff821f4240 rw_ops+0x10
r10 0xffffffffffffffff
r11 0xd76a5b19999e376e
r12 0
r13 0x1
r14 0xfffffd83b3481a60
r15 0xfffffd83b34818e8
rip 0xffffffff8188cbf5 sblock+0x35
cs 0x8
rflags 0x10246 __ALIGN_SIZE+0xf246
rsp 0xffff800022d66110
ss 0x10
sblock+0x35: movq 0x8(%rax),%rax
ddb{4}>
ddb{4}> ps
PID TID PPID UID S FLAGS WAIT COMMAND
57222 30708 52109 0 7 0x3 ifconfig
52109 165317 1 0 3 0x10008b sigsusp ksh
49245 507782 1 0 3 0x100098 kqread cron
6217 82510 20690 95 3 0x1100092 kqread smtpd
82506 376421 20690 103 3 0x1100092 kqread smtpd
82613 290075 20690 95 3 0x1100092 kqread smtpd
4815 308602 20690 95 3 0x100092 kqread smtpd
12941 472567 20690 95 3 0x1100092 kqread smtpd
23744 467673 20690 95 3 0x1100092 kqread smtpd
20690 84561 1 0 3 0x100080 kqread smtpd
76380 94838 1 0 3 0x88 kqread sshd
86280 347923 1 0 3 0x100080 kqread ntpd
14359 243801 59957 83 3 0x100092 kqread ntpd
59957 263943 1 83 3 0x1100092 kqread ntpd
52207 492049 48201 73 3 0x1100090 kqread syslogd
48201 424791 1 0 3 0x100082 netio syslogd
25023 493390 0 0 3 0x14200 bored smr
49475 241893 0 0 3 0x14200 pgzero zerothread
35733 465768 0 0 3 0x14200 aiodoned aiodoned
44819 211641 0 0 3 0x14200 syncer update
12802 139258 0 0 3 0x14200 cleaner cleaner
77815 78998 0 0 3 0x14200 reaper reaper
97772 253526 0 0 3 0x14200 pgdaemon pagedaemon
20567 420970 0 0 3 0x14200 usbtsk usbtask
81765 348189 0 0 3 0x14200 usbatsk usbatsk
58744 470980 0 0 3 0x40014200 acpi0 acpi0
42832 77958 0 0 7 0x40014200 idle5
40468 474721 0 0 3 0x40014200 idle4
98228 394491 0 0 7 0x40014200 idle3
13842 58745 0 0 3 0x40014200 idle2
87447 45776 0 0 7 0x40014200 idle1
14520 516279 0 0 3 0x14200 bored sensors
20057 421224 0 0 3 0x14200 netlock softnet
68120 4487 0 0 3 0x14200 netlock softnet
*15557 167519 0 0 7 0x14200 softnet
57471 116257 0 0 3 0x14200 netlock softnet
21894 328074 0 0 3 0x14200 bored systqmp
36959 61819 0 0 3 0x14200 bored systq
29261 452739 0 0 3 0x40014200 bored softclock
26163 383919 0 0 7 0x40014200 idle0
1 14140 0 0 3 0x82 wait init
0 0 -1 0 3 0x10200 scheduler swapper
ddb{4}>
ddb{4}> ps /o
TID PID UID PRFLAGS PFLAGS CPU COMMAND
30708 57222 0 0x3 0 2 ifconfig
*167519 15557 0 0x14000 0x200 4K softnet
ddb{4}> trace /t 0t30708
sleep_finish(ffff800022e25200,1) at sleep_finish+0xfe
rw_enter(ffffffff822c58d8,1) at rw_enter+0x1cb
if_detach(ffff8000008ca000) at if_detach+0xda
pflow_clone_destroy(ffff8000008ca000) at pflow_clone_destroy+0x1a0
if_clone_destroy(ffff800022e253c0) at if_clone_destroy+0xd9
soo_ioctl(fffffd83afc09e90,80206979,ffff800022e253c0,ffff800022de8d20)
at soo_ioctl+0x161
sys_ioctl(ffff800022de8d20,ffff800022e254d0,ffff800022e25530) at
sys_ioctl+0x2c4
syscall(ffff800022e255a0) at syscall+0x384
Xsyscall() at Xsyscall+0x128
end of kernel
end trace frame: 0x7f7ffffc8a80, count: -9
ddb{4}> trace /t 0t167519
alltraps_kern_meltdown() at alltraps_kern_meltdown+0x7b
sblock(fffffd83b34818e8,fffffd83b3481a10,1) at sblock+0x35
sosend(fffffd83b34818e8,fffffd80cd292d00,0,fffffd80a3b4e200,0,0) at
sosend+0x163
pflow_output_process(ffff8000008ca000) at pflow_output_process+0x67
taskq_thread(ffff800000030100) at taskq_thread+0x100
end trace frame: 0x0, count: -5
ddb{4}>