A bit of progress: in a kernel built with George Koehler's suggested
replacement of isync by sync and with uncommented GENERIC.MP
option MP_LOCKDEBUG
option WITNESS
and (getting rid of any dependence on Go) generating load
by running make -j64 build in /usr/src, I fairly quickly get a panic:
panic: acquiring blockable sleep lock with spinlock or critical
section held (rwlock) kmmaplk
Stopped at panic+0x134: ori r0,r0,0x0
TID PID UID PRFLAGS PFLAGS CPU COMMAND
484082 12380 21 0x18000003 0 7 cc
104407 11776 21 0x18000003 0 3 cc
182886 45104 21 0x18000003 0 6 cc
385115 79953 21 0x18000003 0 2 cc
158768 20484 0 0x14000 0x200 5 zerothread
*413982 47818 0 0x14000 0x200 1 reaper
panic+0x134
witness_checkorder+0x954
rw_enter_read+0x8c
vm_map_lock_read_ln+0x38
uvmfault_lookup+0x114
uvm_fault_check+0x68
uvm_fault+0x12c
trap+0x7a4
trapagain+0x4
--- trap (type 0x300) ---
pmap_remove+0x120
uvm_unmap_kill_entry_withlock+0x1c0
uvm_map_teardown+0x184
uvmspace_free+0x70
uvm_exit+0x38
https://www.openbsd.org/ddb.html describes the minimum info required in bug
reports. Insufficient info makes it difficult to find and fix bugs.
ddb{1}>
Rebooting and retrying, it dies with
mtx_enter: 0x10e0470 lock spun out
ddb{3}> __mp_lock_spin: 0x103e818 lock spun out