On Wed, Jun 19, 2024 at 6:58 AM Martin Pieuchot <m...@openbsd.org> wrote:
> This is a lock order reversal reported by WITNESS.  Thankfully claudio@
> already committed a fix for this on the 16th.  So please, try with
> up-to-date sources

Just to be paranoid, I built a kernel with recent sources and
MP_LOCKDEBUG and WITNESS. I experienced both the "lock spun out" error
after "starting network" -- but not on serial console, unfortunately
-- and from `make -j24` as mentioned which I did capture.

Here is the ddb session -- properly capturing each `mach ddbcpu` and
`trace` with hex this time:

__mp_lock_spin: 0xffffff8001292800 lock spun out
Stopped at      __mp_lock+0x138:        ldr     w8, [x23,#712]
ddb{16}> __mp_lock_spin: 0xffffff8001292800 lock spun out

ddb{16}> show panic__mp_lock_spin: 0xffffff8001292800 lock spun out

the kernel did not panic
ddb{16}> trace
db_enter() at __mp_lock+0x134
__mp_lock() at svc_handler+0x42c
svc_handler() at do_el0_sync+0xc8
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at 0x479a436a0
--- trap ---
end of kernel
ddb{16}> mach ddbcpu 0
Stopped at      __mp_lock+0x138:        ldr     w8, [x23,#712]
ddb{0}> trace
db_enter() at __mp_lock+0x134
__mp_lock() at aplintc_irq_handler+0x158
aplintc_irq_handler() at arm_cpu_irq+0x34
arm_cpu_irq() at handle_el1h_irq+0x68
handle_el1h_irq() at db_enter_ddb+0x268
db_enter_ddb() at kdb_trap+0x64
kdb_trap() at db_trapper+0x30
db_trapper() at handle_el1h_sync+0x68
handle_el1h_sync() at db_enter+0x14
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at aq_lookup+0x80
aq_intr() at arm_cpu_irq+0x34
arm_cpu_irq() at handle_el1h_irq+0x68
handle_el1h_irq() at do_el1h_sync+0x40
do_el1h_sync() at handle_el1h_sync+0x68
handle_el1h_sync() at db_enter+0x14
db_enter() at __mp_lock+0x134
__mp_lock() at softintr_biglock_wrap+0x14
softintr_biglock_wrap() at softintr_dispatch+0x84
softintr_dispatch() at arm_do_pending_intr+0xfc
arm_do_pending_intr() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at mtx_enter+0xec
mtx_enter() at sched_idle+0x12c
sched_idle() at proc_trampoline+0xc
ddb{0}> mach ddbcpu 1
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{1}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at mtx_enter+0xec
mtx_enter() at mi_switch+0x2f0
mi_switch() at sched_idle+0x134
sched_idle() at proc_trampoline+0xc
ddb{1}> mach ddbcpu 2
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{2}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at mtx_enter+0xec
mtx_enter() at sched_idle+0x12c
sched_idle() at proc_trampoline+0xc
ddb{2}> mach ddbcpu 3
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{3}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at mtx_enter+0xb8
mtx_enter() at sched_idle+0x12c
sched_idle() at proc_trampoline+0xc
ddb{3}> mach ddbcpu 4
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{4}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at mtx_enter+0x114
mtx_enter() at sys_sched_yield+0x6c
sys_sched_yield() at svc_handler+0x478
svc_handler() at do_el0_sync+0xc8
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at 0x479a67b88
--- trap ---
end of kernel
ddb{4}> mach ddbcpu 5
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{5}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at cpu_idle_cycle+0x28
cpu_idle_cycle() at sched_idle+0x218
sched_idle() at proc_trampoline+0xc
ddb{5}> mach ddbcpu 6
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{6}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at __mp_lock+0x104
__mp_lock() at svc_handler+0x42c
svc_handler() at do_el0_sync+0xc8
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at 0x479a436a0
--- trap ---
end of kernel
ddb{6}> mach ddbcpu 7
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{7}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at __mp_lock+0x104
__mp_lock() at reaper+0x108
reaper() at proc_trampoline+0xc
ddb{7}> mach ddbcpu 8
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{8}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at mtx_enter+0xe4
mtx_enter() at exit1+0x534
exit1() at sys___threxit+0x4c
process_untrace() at svc_handler+0x44c
svc_handler() at do_el0_sync+0xc8
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at 0x479a436a0
--- trap ---
end of kernel
ddb{8}> mach ddbcpu 9
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{9}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at mtx_enter+0xe4
mtx_enter() at sleep_setup+0x58
sleep_setup() at rw_enter+0x154
rw_enter() at sys_futex+0x50
sys_futex() at svc_handler+0x478
svc_handler() at do_el0_sync+0xc8
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at 0x479a37d80
--- trap ---
end of kernel
ddb{9}> mach ddbcpu a
Symbol not found
ddb{9}> mach ddbcpu 0xa
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{10}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at mtx_enter+0x114
mtx_enter() at sleep_finish+0xb0
sleep_finish() at rw_enter+0x184
rw_enter() at sys_futex+0x50
sys_futex() at svc_handler+0x478
svc_handler() at do_el0_sync+0xc8
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at 0x479a37d80
--- trap ---
end of kernel
ddb{10}> mach ddbcpu 0xb
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{11}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at mtx_enter+0xe4
mtx_enter() at wakeup_n+0x44
wakeup_n() at sys_futex+0xf0
sys_futex() at svc_handler+0x478
svc_handler() at do_el0_sync+0xc8
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at 0x479a37d80
--- trap ---
end of kernel
ddb{11}> mach ddbcpu 0xc
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{12}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at cpu_idle_cycle+0x28
cpu_idle_cycle() at sched_idle+0x218
sched_idle() at proc_trampoline+0xc
ddb{12}> mach ddbcpu 0xd
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{13}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at __mp_lock+0x110
__mp_lock() at svc_handler+0x42c
svc_handler() at do_el0_sync+0xc8
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at 0x479a436a0
--- trap ---
end of kernel
ddb{13}> mach ddbcpu 0xe
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{14}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at mtx_enter+0xb0
mtx_enter() at mi_switch+0x2f0
mi_switch() at sys_sched_yield+0x8c
sys_sched_yield() at svc_handler+0x478
svc_handler() at do_el0_sync+0xc8
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at 0x479a67b88
--- trap ---
end of kernel
ddb{14}> mach ddbcpu 0xf
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{15}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at mtx_enter+0xe4
mtx_enter() at mi_switch+0x2f0
mi_switch() at sys_sched_yield+0x8c
sys_sched_yield() at svc_handler+0x478
svc_handler() at do_el0_sync+0xc8
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at 0x479a67b88
--- trap ---
end of kernel
ddb{15}> mach ddbcpu 0x10
Stopped at      __mp_lock+0x138:        ldr     w8, [x23,#712]
ddb{16}> trace
db_enter() at __mp_lock+0x134
__mp_lock() at svc_handler+0x42c
svc_handler() at do_el0_sync+0xc8
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at 0x479a436a0
--- trap ---
end of kernel
ddb{16}> mach ddbcpu 0x11
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{17}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at cpu_idle_cycle+0x28
cpu_idle_cycle() at sched_idle+0x218
sched_idle() at proc_trampoline+0xc
ddb{17}> mach ddbcpu 0x12
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{18}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at cpu_idle_cycle+0x28
cpu_idle_cycle() at sched_idle+0x218
sched_idle() at proc_trampoline+0xc
ddb{18}> mach ddbcpu 0x13
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{19}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at cpu_idle_cycle+0x28
cpu_idle_cycle() at sched_idle+0x218
sched_idle() at proc_trampoline+0xc
ddb{19}> mach ddbcpu 0x14
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{20}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at cpu_idle_cycle+0x28
cpu_idle_cycle() at sched_idle+0x218
sched_idle() at proc_trampoline+0xc
ddb{20}> mach ddbcpu 0x15
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{21}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at cpu_idle_cycle+0x28
cpu_idle_cycle() at sched_idle+0x218
sched_idle() at proc_trampoline+0xc
ddb{21}> mach ddbcpu 0x16
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{22}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at __mp_lock+0x104
__mp_lock() at svc_handler+0x42c
svc_handler() at do_el0_sync+0xc8
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at 0x479a436a0
--- trap ---
end of kernel
ddb{22}> mach ddbcpu 0x17
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff8000265cb0 <aplin
tc_fiq_handler+0x7c>
ddb{23}> trace
db_enter() at aplintc_fiq_handler+0x6c
aplintc_fiq_handler() at arm_cpu_fiq+0x34
arm_cpu_fiq() at handle_el1h_fiq+0x68
handle_el1h_fiq() at mtx_enter+0xe4
mtx_enter() at sys_sched_yield+0x6c
sys_sched_yield() at svc_handler+0x478
svc_handler() at do_el0_sync+0xc8
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at 0x479a67b88
--- trap ---
end of kernel
ddb{23}> ps
   PID     TID   PPID    UID  S       FLAGS  WAIT          COMMAND
 87284  314706  61748   1000  3  0x18000083  fsleep        ld
*87284  429333  61748   1000  7  0x1c000003                ld
 87284  190531  61748   1000  7  0x1c000003                ld
 87284  165830  61748   1000  7  0x1c000003                ld
 87284  404071  61748   1000  7  0x1c000003                ld
 87284  341943  61748   1000  7  0x1c000003                ld
 87284  330576  61748   1000  3  0x1c000023                ld
 87284  208320  61748   1000  7  0x1c000003                ld
 87284  365115  61748   1000  7  0x1c000003                ld
 87284   87991  61748   1000  7  0x1c000003                ld
 87284  482580  61748   1000  7  0x1c000003                ld
 87284  170325  61748   1000  7  0x1c000003                ld
 61748  491383   6076   1000  3   0x810008b  sigsusp       sh
  6076  188509  93429   1000  3   0x810008b  sigsusp       sh
 93429  461963  99665   1000  3  0x1810008b  sigsusp       make
 99665   53468  73355   1000  3   0x800008b  sigsusp       tcsh
 73355  226688  95347   1000  3  0x18000098  kqread        sshd-session
 95347  499852  24188      0  3  0x18000082  kqread        sshd-session
 20002   68265      1     35  3  0x18100090  kqread        xconsole
 33150   59657      1      0  3  0x18000080  sbwait        xconsole
 50672  395713  44884      0  3  0x18100080  kqread        xenodm
 69690  483270  67337      0  3  0x18100080  sbwait        Xorg
 74328  523358      1      0  3  0x18100083  ttyin         getty
 45486  251573      1      0  3  0x18100083  ttyin         getty
 27187  496538      1      0  3  0x18100083  ttyin         getty
  2863   31654      1      0  3  0x18100083  ttyin         getty
 19078  461890      1      0  3  0x18100083  ttyin         getty
 67337  424556  44884     35  3  0x18000092  kqread        Xorg
 67337  495093  44884     35  3  0x1c000092  kqread        Xorg
 44884  432936      1      0  3  0x18000088  sigsusp       xenodm
 25566   25699      1      0  3  0x18100098  kqread        cron
 64565   55956      1     99  3  0x19100090  kqread        sndiod
 89388  474083      1    110  3  0x18100090  kqread        sndiod
   398  220070  43267     95  3  0x19100092  kqread        smtpd
  7416  515617  43267    103  3  0x19100092  kqread        smtpd
 49178  375979  43267     95  3  0x19100092  kqread        smtpd
 85158  367781  43267     95  3  0x18100092  kqread        smtpd
 26299  385615  43267     95  3  0x19100092  kqread        smtpd
 42391  227692  43267     95  3  0x19100092  kqread        smtpd
 43267  135998      1      0  3  0x18100080  kqread        smtpd
 24188  507063      1      0  3  0x18000088  kqread        sshd
 81961   14601      1      0  3  0x18100080  kqread        ntpd
  1715   94321  70575     83  3  0x18100092  kqread        ntpd
 70575  270582      1     83  3  0x19100092  kqread        ntpd
 73400  373297   2023     74  3  0x19100092  bpf           pflogd
  2023  452188      1      0  3  0x18000080  sbwait        pflogd
 43901   12710  44193     73  3  0x19100090  kqread        syslogd
 44193  185533      1      0  3  0x18100082  sbwait        syslogd
 53462  369087      1      0  3  0x18100080  kqread        resolvd
 93095  447202  86164     77  3  0x18100092  kqread        dhcpleased
  6977  456365  86164     77  3  0x18100092  kqread        dhcpleased
 86164   15097      1      0  3  0x18000080  kqread        dhcpleased
 58677  468372  34282    115  3  0x18100092  kqread        slaacd
 30134  483954  34282    115  3  0x18100092  kqread        slaacd
 34282  431857      1      0  3  0x18100080  kqread        slaacd
 61486  218647      0      0  3     0x14200  bored         wsdisplay0
 61838  401446      0      0  3     0x14200  bored         smr
 34139  127591      0      0  3     0x14200  pgzero        zerothread
 92183  359449      0      0  3     0x14200  aiodoned      aiodoned
 13223  194947      0      0  3     0x14200  syncer        update
 75057  110178      0      0  3     0x14200  cleaner       cleaner
 93183  321483      0      0  7     0x14200                reaper
  4435  190370      0      0  3     0x14200  pgdaemon      pagedaemon
 48989   90863      0      0  3     0x14200  usbtsk        usbtask
 59348   83534      0      0  3     0x14200  usbatsk       usbatsk
 46075   75523      0      0  3     0x14200  bored         sensors
 41605  298290      0      0  3     0x14200  bored         sleep
 82166   77699      0      0  3  0x40014200                idle23
 58501  270995      0      0  3  0x40014200                idle22
 49238   36032      0      0  7  0x40014200                idle21
 14560  374269      0      0  7  0x40014200                idle20
 30740  397107      0      0  7  0x40014200                idle19
 82709  231848      0      0  7  0x40014200                idle18
  4587  206789      0      0  7  0x40014200                idle17
 96946  484610      0      0  3  0x40014200                idle16
 45547  156727      0      0  3  0x40014200                idle15
 16227   68226      0      0  3  0x40014200                idle14
 16427  515737      0      0  3  0x40014200                idle13
 87229  169229      0      0  7  0x40014200                idle12
 21094  332559      0      0  3  0x40014200                idle11
 37778  402429      0      0  3  0x40014200                idle10
 19554   32522      0      0  3  0x40014200                idle9
 45791  210281      0      0  3  0x40014200                idle8
 21019  352782      0      0  3  0x40014200                idle7
 68979  389356      0      0  3  0x40014200                idle6
 91522  279642      0      0  7  0x40014200                idle5
  9864  270704      0      0  3  0x40014200                idle4
 25038  446573      0      0  7  0x40014200                idle3
 17657  427801      0      0  7  0x40014200                idle2
 85065  113503      0      0  7  0x40014200                idle1
 44027   22065      0      0  3     0x14200  bored         softnet3
 58125  300036      0      0  3     0x14200  bored         softnet2
 34271  434229      0      0  3     0x14200  bored         softnet1
  3452   23091      0      0  3     0x14200  bored         softnet0
 81531  440363      0      0  3     0x14200  bored         systqmp
 56257  193002      0      0  3     0x14200  bored         systq
 87990  242261      0      0  3     0x14200  tmoslp        softclockmp
  3106  412165      0      0  3  0x40014200  tmoslp        softclock
 83105   99584      0      0  7  0x40014200                idle0
 11466   75176      0      0  3     0x14200  kmalloc       kmthread
     1   80490      0      0  3   0x8000082  wait          init
     0       0     -1      0  3     0x10200  scheduler     swapper
ddb{23}> show all locks
ddb{23}>

Reply via email to