Dana Koch <d...@google.com> schrieb am So., 23. Juni 2024, 19:50:

> > Could you try the diff below?  Stuart confirmed it prevents the hang on
> > his machine.
>
> This also seems to be working well for me so far.
>

Okay, I've got an actual panic now, with similar reproduction steps
building LLVM instead of the kernel; not sure if this is related or
unrelated to the underlying problem, but here's a ddb session.

I also remembered `show witness` which may or may not be helpful here,
pointing at a lock order reversal.


__mp_lock_spin: 0xffffff8001328528 lock spun out
Stopped at      __mp_lock+0x138:        ldr     w8, [x23,#1352]
ddb{17}> __mp_lock_spin: 0xffffff8001328528 lock spun out
panic: kernel diagnostic assertion "uvm_page_owner_locked_p(pg)" failed:
file "
/home/dana/src/openbsd/openbsd-src/sys/uvm/uvm_page.c", line 1268

ddb{17}> trace__mp_lock_spin: 0xffffff8001328528 lock spun out

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 0x46d2d0fe0
--- trap ---
end of kernel
ddb{17}> ps /o
    TID    PID    UID     PRFLAGS     PFLAGS  CPU  COMMAND
 483459   1841   1000  0x18000003          0    4  c++
*507682  54858   1000  0x18000003          0   17  c++
 491941  81792   1000  0x18000003          0   19  c++
  92517  49319   1000  0x18000003          0   23  c++
 479846  23280   1000  0x18000003          0    6  c++
 200584  12281   1000  0x18000003          0   22  c++
 421381  35598   1000  0x18000003          0    5  c++
  44090  50287   1000  0x18000003          0    0  c++
 188893  26365   1000  0x18000003          0   18  c++
  74859   4393   1000  0x18000003          0    7  c++
 208648  45008   1000  0x18000003          0    8  c++
  97267  77502   1000  0x18000003          0   16  c++
 174351  42043   1000  0x18000003          0   15  c++
 501477  35285   1000  0x18000003          0   12  c++
 255809  23573   1000  0x18000003          0   21  c++
 106102  27978   1000  0x18000003          0   14  c++
 294101  98084   1000  0x18000003          0   13  c++
  76692  99593   1000  0x18000003          0   20  c++
 520521  17740   1000  0x18000003          0    9  c++
 343763  76972   1000  0x18000003          0   11  c++
 372390  54052   1000  0x18000003          0    3  c++
 435277  88527   1000  0x18000003          0   10  c++
  99868  81397      0     0x14000      0x200    2  reaper
 321683   8245      0     0x14000      0x200    1K pagedaemon
ddb{17}> show all locks
CPU 1:
exclusive mutex &pmap->pm_mtx r = 0 (0xffffff816a2cbc48)
exclusive mutex &uvm.pageqlock r = 0 (0xffffff80012c5958)
Process 1841 (c++) thread 0xffffff8165132628 (483459)
exclusive rwlock amaplk r = 0 (0xffffff81654b01d8)
shared rwlock vmmaplk r = 0 (0xffffff816e1727e0)
Process 81792 (c++) thread 0xffffff8165133558 (491941)
exclusive rwlock amaplk r = 0 (0xffffff8176c011d8)
shared rwlock vmmaplk r = 0 (0xffffff809fe2ab48)
Process 49319 (c++) thread 0xffffff816d089570 (92517)
exclusive rwlock amaplk r = 0 (0xffffff816cb97c50)
shared rwlock vmmaplk r = 0 (0xffffff816ff25618)
Process 23280 (c++) thread 0xffffff816d088b50 (479846)
exclusive rwlock amaplk r = 0 (0xffffff8176c104e0)
shared rwlock vmmaplk r = 0 (0xffffff8167d8ab58)
Process 12281 (c++) thread 0xffffff816d0888c8 (200584)
exclusive rwlock amaplk r = 0 (0xffffff8176c100f0)
shared rwlock vmmaplk r = 0 (0xffffff809f81f460)
Process 35598 (c++) thread 0xffffff816d0883b8 (421381)
exclusive rwlock amaplk r = 0 (0xffffff8176c10e10)
shared rwlock vmmaplk r = 0 (0xffffff816ff25eb0)
Process 50287 (c++) thread 0xffffff816d089060 (44090)
exclusive rwlock amaplk r = 0 (0xffffff8176c10c88)
shared rwlock vmmaplk r = 0 (0xffffff816ff252a8)
Process 26365 (c++) thread 0xffffff816d0897f8 (188893)
exclusive rwlock amaplk r = 0 (0xffffff8176c10eb8)
shared rwlock vmmaplk r = 0 (0xffffff8176112b58)
Process 4393 (c++) thread 0xffffff8165133048 (74859)
exclusive rwlock amaplk r = 0 (0xffffff8176c10860)
shared rwlock vmmaplk r = 0 (0xffffff8176112ec8)
Process 45008 (c++) thread 0xffffff8165132dc0 (208648)
exclusive rwlock amaplk r = 0 (0xffffff8176c10320)
shared rwlock vmmaplk r = 0 (0xffffff81761127e8)
Process 77502 (c++) thread 0xffffff816ab95d00 (97267)
exclusive rwlock amaplk r = 0 (0xffffff8176c10048)
shared rwlock vmmaplk r = 0 (0xffffff81761129a0)
Process 42043 (c++) thread 0xffffff816ab95568 (174351)
exclusive rwlock amaplk r = 0 (0xffffff816a3a2f68)
shared rwlock vmmaplk r = 0 (0xffffff8176112d10)
Process 35285 (c++) thread 0xffffff81651343a8 (501477)
exclusive rwlock amaplk r = 0 (0xffffff8176c105c0)
shared rwlock vmmaplk r = 0 (0xffffff816eebcb48)
Process 23573 (c++) thread 0xffffff8165135560 (255809)
exclusive rwlock amaplk r = 0 (0xffffff8176c109e8)
shared rwlock vmmaplk r = 0 (0xffffff816eebc468)
Process 27978 (c++) thread 0xffffff8165135cf8 (106102)
exclusive rwlock amaplk r = 0 (0xffffff816da1acf8)
shared rwlock vmmaplk r = 0 (0xffffff816eebcd00)
Process 98084 (c++) thread 0xffffff81651352d8 (294101)
exclusive rwlock amaplk r = 0 (0xffffff8176c10080)
shared rwlock vmmaplk r = 0 (0xffffff816e172ec0)
Process 99593 (c++) thread 0xffffff8165132b38 (76692)
exclusive rwlock amaplk r = 0 (0xffffff816da1a7f0)
shared rwlock vmmaplk r = 0 (0xffffff816e172628)
Process 17740 (c++) thread 0xffffff816371e2b8 (520521)
exclusive rwlock amaplk r = 0 (0xffffff8176c109b0)
shared rwlock vmmaplk r = 0 (0xffffff8167d8a630)
Process 76972 (c++) thread 0xffffff82c5df3708 (343763)
exclusive rwlock amaplk r = 0 (0xffffff8176c10240)
shared rwlock vmmaplk r = 0 (0xffffff8167d8ad10)
Process 54052 (c++) thread 0xffffff816ab94638 (372390)
exclusive rwlock amaplk r = 0 (0xffffff8176c10cc0)
shared rwlock vmmaplk r = 0 (0xffffff809f7bbd00)
Process 88527 (c++) thread 0xffffff816ab95a78 (435277)
exclusive rwlock amaplk r = 0 (0xffffff81704a4590)
Process 81397 (reaper) thread 0xffffff8162de8f48 (99868)
exclusive rwlock amaplk r = 0 (0xffffff8176246780)
Process 8245 (pagedaemon) thread 0xffffff8162de91d0 (321683)
exclusive rwlock amaplk r = 0 (0xffffff816f569f28)
exclusive kernel_lock &kernel_lock r = 0 (0xffffff8001328d30)
ddb{17}> mach ddbcpu 0
Stopped at      __mp_lock+0x138:        ldr     w8, [x23,#1352]
    TID    PID    UID     PRFLAGS     PFLAGS  CPU  COMMAND
 483459   1841   1000  0x18000003          0    4  c++
 507682  54858   1000  0x18000003          0   17  c++
 491941  81792   1000  0x18000003          0   19  c++
  92517  49319   1000  0x18000003          0   23  c++
 479846  23280   1000  0x18000003          0    6  c++
 200584  12281   1000  0x18000003          0   22  c++
 421381  35598   1000  0x18000003          0    5  c++
* 44090  50287   1000  0x18000003          0    0  c++
 188893  26365   1000  0x18000003          0   18  c++
  74859   4393   1000  0x18000003          0    7  c++
 208648  45008   1000  0x18000003          0    8  c++
  97267  77502   1000  0x18000003          0   16  c++
 174351  42043   1000  0x18000003          0   15  c++
 501477  35285   1000  0x18000003          0   12  c++
 255809  23573   1000  0x18000003          0   21  c++
 106102  27978   1000  0x18000003          0   14  c++
 294101  98084   1000  0x18000003          0   13  c++
  76692  99593   1000  0x18000003          0   20  c++
 520521  17740   1000  0x18000003          0    9  c++
 343763  76972   1000  0x18000003          0   11  c++
 372390  54052   1000  0x18000003          0    3  c++
 435277  88527   1000  0x18000003          0   10  c++
  99868  81397      0     0x14000      0x200    2  reaper
 321683   8245      0     0x14000      0x200    1K pagedaemon
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+0x25c
db_enter_ddb() at kdb_trap+0x64
kdb_trap() at db_trapper+0x30
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{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+0x25c
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+0x24
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+0xe4
mtx_enter() at uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at __ALIGN_SIZE+0x573a8d4
--- trap ---
end of kernel
ddb{0}> mach ddbcpu 1
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 do_el1h_sync+0x24
do_el1h_sync() at handle_el1h_sync+0x68
handle_el1h_sync() at db_enter+0x14
db_enter() at panic+0x148
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 do_el1h_sync+0x24
do_el1h_sync() at handle_el1h_sync+0x68
handle_el1h_sync() at db_enter+0x14
db_enter() at panic+0x148
panic() at __assert+0x28
panic() at uvm_pagedeactivate+0x1cc
uvm_pagedeactivate() at uvmpd_scan+0x208
uvmpd_scan() at uvm_pageout+0x2ac
uvm_pageout() at proc_trampoline+0xc
ddb{1}> mach ddbcpu 2
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_anfree_list+0x68
uvm_anfree_list() at amap_wipeout+0xf8
amap_wipeout() at uvm_unmap_detach+0x70
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+0xe4
mtx_enter() at uvm_anfree_list+0x68
uvm_anfree_list() at amap_wipeout+0xf8
amap_wipeout() at uvm_unmap_detach+0x70
uvm_unmap_detach() at uvm_map_teardown+0x1a8
uvm_map_teardown() at uvmspace_free+0x70
uvmspace_free() at reaper+0x128
reaper() at proc_trampoline+0xc
ddb{2}> mach ddbcpu 3
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
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+0xe4
mtx_enter() at uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at 0x4e0de3264
--- trap ---
end of kernel
ddb{3}> mach ddbcpu 4
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_upper+0x2a0
uvm_fault_upper() at uvm_fault+0xb8
uvm_fault() at udata_abort+0x138
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+0xe4
mtx_enter() at uvm_fault_upper+0x2a0
uvm_fault_upper() at uvm_fault+0xb8
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at __ALIGN_SIZE+0x40c4134
--- trap ---
end of kernel
ddb{4}> mach ddbcpu 5
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
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 mtx_enter+0xe4
mtx_enter() at uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at __ALIGN_SIZE+0x5702e90
--- trap ---
end of kernel
ddb{5}> mach ddbcpu 6
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
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 mtx_enter+0xe4
mtx_enter() at uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at __ALIGN_SIZE+0x570296c
--- trap ---
end of kernel
ddb{6}> mach ddbcpu 7
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
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 mtx_enter+0xec
mtx_enter() at uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at __ALIGN_SIZE+0x5999d20
--- trap ---
end of kernel
ddb{7}> mach ddbcpu 8
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
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+0xec
mtx_enter() at uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at __ALIGN_SIZE+0x5914b74
--- trap ---
end of kernel
ddb{8}> mach ddbcpu 9
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at __ALIGN_SIZE+0x5914b74
--- trap ---
end of kernel
ddb{9}> mach ddbcpu 0xa
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_anfree_list+0x68
uvm_anfree_list() at amap_wiperange_chunk+0x100
amap_wiperange_chunk() at amap_wiperange+0x18c
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+0xec
mtx_enter() at uvm_anfree_list+0x68
uvm_anfree_list() at amap_wiperange_chunk+0x100
amap_wiperange_chunk() at amap_wiperange+0x18c
amap_wiperange() at amap_pp_adjref+0x28c
amap_pp_adjref() at amap_adjref_anons+0xf0
amap_adjref_anons() at uvm_unmap_detach+0x70
uvm_unmap_detach() at sys_munmap+0x128
sys_munmap() at svc_handler+0x478
svc_handler() at do_el0_sync+0xc8
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at 0x4f73673c8
--- trap ---
end of kernel
ddb{10}> mach ddbcpu 0xb
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
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+0xec
mtx_enter() at uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at __ALIGN_SIZE+0x59245b4
--- trap ---
end of kernel
ddb{11}> mach ddbcpu 0xc
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
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 mtx_enter+0xe4
mtx_enter() at uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at __ALIGN_SIZE+0x5914b74
--- trap ---
end of kernel
ddb{12}> mach ddbcpu 0xd
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
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 mtx_enter+0xe4
mtx_enter() at uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at __ALIGN_SIZE+0x4fdc1c0
--- trap ---
end of kernel
ddb{13}> mach ddbcpu 0xe
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
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+0xe4
mtx_enter() at uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at __ALIGN_SIZE+0x57038b8
--- trap ---
end of kernel
ddb{14}> mach ddbcpu 0xf
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
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+0xec
mtx_enter() at uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at __ALIGN_SIZE+0x5914b1c
--- trap ---
end of kernel
ddb{15}> mach ddbcpu 0x10
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
ddb{16}> 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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at __ALIGN_SIZE+0x4e63188
--- trap ---
end of kernel
ddb{16}> mach ddbcpu 0x11
Stopped at      __mp_lock+0x138:        ldr     w8, [x23,#1352]
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 0x46d2d0fe0
--- trap ---
end of kernel
ddb{17}> 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 0x46d2d0fe0
--- trap ---
end of kernel
ddb{17}> mach ddbcpu 0x12
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
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 mtx_enter+0xe4
mtx_enter() at uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at __ALIGN_SIZE+0x5933dd8
--- trap ---
end of kernel
ddb{18}> mach ddbcpu 0x13
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
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 mtx_enter+0xe4
mtx_enter() at uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at 0x4819ddc40
--- trap ---
end of kernel
ddb{19}> mach ddbcpu 0x14
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
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 mtx_enter+0xe4
mtx_enter() at uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at __ALIGN_SIZE+0x58958ac
--- trap ---
end of kernel
ddb{20}> mach ddbcpu 0x15
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
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 mtx_enter+0xe4
mtx_enter() at uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at __ALIGN_SIZE+0x4e63188
--- trap ---
end of kernel
ddb{21}> mach ddbcpu 0x16
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
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 mtx_enter+0xec
mtx_enter() at uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at __ALIGN_SIZE+0x594b754
--- trap ---
end of kernel
ddb{22}> mach ddbcpu 0x17
Stopped at      aplintc_fiq_handler+0x70:       b       ffffff80006d17c4
<aplin
tc_fiq_handler+0x7c>
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
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 uvm_fault_lower+0x630
uvm_fault_lower() at uvm_fault+0x174
uvm_fault() at udata_abort+0x138
udata_abort() at do_el0_sync+0x130
do_el0_sync() at handle_el0_sync+0x70
handle_el0_sync() at __ALIGN_SIZE+0x57038b8
--- trap ---
end of kernel
ddb{23}>
ddb{23}> show witness /b
Number of known direct relationships is 481

Lock order reversal between "&mp->mnt_lock"(rwlock) and
"&ip->i_lock"(rrwlock)!

witness: incomplete path, depth 4
ddb{23}> show panic
*cpu1: kernel diagnostic assertion "uvm_page_owner_locked_p(pg)" failed:
file "
/home/dana/src/openbsd/openbsd-src/sys/uvm/uvm_page.c", line 1268

Reply via email to