On 29/08/25(Fri) 19:12, Alexander Bluhm wrote: > Hi, > > One of my i386 test machines crashed during make build. Kernel is > GENERIC.MP built from current sources. > > panic: uvm_fault(0xd59b2424, 0xcf800000, 0, 1) -> e > Stopped at db_enter+0x4: popl %ebp > TID PID UID PRFLAGS PFLAGS CPU COMMAND > *435945 40779 21 0x2 0 5 llvm-tblgen > 212835 13904 21 0x2 0 3 llvm-tblgen > 150086 44694 21 0x2 0 11 llvm-tblgen > 332575 10539 21 0x2 0 10 llvm-tblgen > 385473 77182 21 0x2 0 8 llvm-tblgen > 104320 19436 0 0x14000 0x200 1 aiodoned > db_enter() at db_enter+0x4 > panic(d0cbc6b7) at panic+0x7a > kpageflttrap(f86b5c94,cf800000) at kpageflttrap+0x133 > trap(f86b5c94) at trap+0x255 > calltrap() at calltrap+0xc > pmap_remove_ptes_pae(d0f6fda0,0,cf800000,0,1000,0,f86b5d1c) at > pmap_remove_ptes_pae+0x4f > pmap_do_remove_pae(d0f6fda0,0,1000,0) at pmap_do_remove_pae+0x120 > pmap_remove(d0f6fda0,0,1000) at pmap_remove+0x18 > uvm_pagermapout(0,1) at uvm_pagermapout+0x1a
This is very wrong. That means `kva' is 0. The only way this can happen is if pmap_enter(9) failed in uvm_pagermapin(). Using pmap_kenter_pa(9) would not only prevent this issue, it would also speed up memory recovery. Sadly we had to revert such change because on Landisk it doesn't handle conflicting cache aliases like pmap_enter(9). Could that be fixed? > uvn_io(d655b5b4,f86b5de8,1,202,0) at uvn_io+0x289 > uvn_get(d655b5b4,4e000,0,f86b5e40,f86b5e3c,0,1,0) at uvn_get+0x16d > uvm_fault_lower_io(f86b5ee0,f86b5eb4,f86b5e84,f86b5e80) at > uvm_fault_lower_io+0x221 > uvm_fault_lower(f86b5ee0,f86b5eb4,f86b5efc) at uvm_fault_lower+0x283 > uvm_fault(d59b2424,44e000,0,1) at uvm_fault+0x1a1 > 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{5}> x/s version > version: OpenBSD 7.7-current (GENERIC.MP) #0: Thu Aug 28 23:09:35 CEST > 2025\012 > [email protected]:/usr/src/sys/arch/i386/compile/GENERIC.MP\012 > > ddb{5}> show panic > *cpu5: uvm_fault(0xd59b2424, 0xcf800000, 0, 1) -> e > > ddb{5}> trace > db_enter() at db_enter+0x4 > panic(d0cbc6b7) at panic+0x7a > kpageflttrap(f86b5c94,cf800000) at kpageflttrap+0x133 > trap(f86b5c94) at trap+0x255 > calltrap() at calltrap+0xc > pmap_remove_ptes_pae(d0f6fda0,0,cf800000,0,1000,0,f86b5d1c) at > pmap_remove_ptes_pae+0x4f > pmap_do_remove_pae(d0f6fda0,0,1000,0) at pmap_do_remove_pae+0x120 > pmap_remove(d0f6fda0,0,1000) at pmap_remove+0x18 > uvm_pagermapout(0,1) at uvm_pagermapout+0x1a > uvn_io(d655b5b4,f86b5de8,1,202,0) at uvn_io+0x289 > uvn_get(d655b5b4,4e000,0,f86b5e40,f86b5e3c,0,1,0) at uvn_get+0x16d > uvm_fault_lower_io(f86b5ee0,f86b5eb4,f86b5e84,f86b5e80) at > uvm_fault_lower_io+0x221 > uvm_fault_lower(f86b5ee0,f86b5eb4,f86b5efc) at uvm_fault_lower+0x283 > uvm_fault(d59b2424,44e000,0,1) at uvm_fault+0x1a1 > upageflttrap(f86b5ff0,44ea0d) at upageflttrap+0x55 > trap(f86b5ff0) at trap+0x1e9 > calltrap() at calltrap+0xc > end of kernel > > ddb{5}> show register > ds 0x10 > es 0x10 > fs 0x20 > gs 0 > edi 0xd0cbc6b7 gen12_xcs_offsets+0xf1e8 > esi 0 > ebp 0xf86b5c0c > ebx 0xf654f618 > edx 0x10 > ecx 0xa83af42b > eax 0x34 > eip 0xd041c974 db_enter+0x4 > cs 0x8 > eflags 0x202 > esp 0xf86b5c0c > ss 0x10 > db_enter+0x4: popl %ebp > > ddb{5}> ps > PID TID PPID UID S FLAGS WAIT COMMAND > *40779 435945 23897 21 7 0x2 llvm-tblgen > 23897 138229 57914 21 3 0x10008a sigsusp sh > 49931 369222 57914 21 3 0x2 biowait llvm-tblgen > 38357 6862 57914 21 3 0x2 flt_pmfail1 llvm-tblgen > 32101 460407 9912 21 3 0x2 flt_pmfail1 llvm-tblgen > 756 422844 57914 21 3 0x2 flt_noram3 llvm-tblgen > 13904 212835 57914 21 7 0x2 llvm-tblgen > 69850 77517 57914 21 3 0x2 flt_noram1 llvm-tblgen > 27460 162562 57914 21 3 0x2 biowait llvm-tblgen > 44694 150086 57914 21 7 0x2 llvm-tblgen > 24447 263270 57914 21 3 0x2 flt_pmfail1 llvm-tblgen > 9912 283403 57914 21 3 0x10008a sigsusp sh > 10539 332575 57914 21 7 0x2 llvm-tblgen > 77182 385473 57914 21 7 0x2 llvm-tblgen > 99319 384756 57914 21 3 0x2 biowait llvm-tblgen > 57914 20160 25644 21 3 0x10008a sigsusp make > 25644 438306 89227 21 3 0x10008a sigsusp sh > 89227 126930 20598 21 3 0x10008a sigsusp make > 20598 83226 45856 21 3 0x10008a sigsusp sh > 45856 95319 508 21 3 0x10008a sigsusp make > 508 515009 8199 21 3 0x10008a sigsusp sh > 8199 521600 50234 21 3 0x10008a sigsusp make > 50234 308362 79552 21 3 0x10008a sigsusp sh > 79552 277314 18529 21 3 0x10008a sigsusp make > 18529 406475 52080 0 3 0x10008a sigsusp sh > 52080 388122 97675 0 3 0x10008a sigsusp make > 97675 389755 63098 0 3 0x10008a sigsusp make > 63098 420707 83275 0 3 0x10008a sigsusp ksh > 83275 318844 44263 0 3 0x98 kqread sshd-session > 44263 187234 11977 0 3 0x92 kqread sshd-session > 42159 283177 1 0 3 0x100080 sbwait nonxt-reflect > 98501 362680 1 0 3 0x100080 sbwait nonxt-reflect > 87574 17810 1 0 3 0x100080 sbwait nonxt-reflect > 53851 466456 1 0 3 0x100080 sbwait nonxt-reflect > 34512 263570 1 0 3 0x100080 sbwait nonxt-reflect > 3236 23468 1 0 3 0x100080 sbwait nonxt-reflect > 4691 182606 1 0 3 0x100080 sbwait nonxt-reflect > 60428 462552 1 0 3 0x100080 sbwait nonxt-reflect > 31133 127314 1 0 3 0x100080 sbwait nonxt-reflect > 58086 438079 1 0 3 0x100080 sbwait nonxt-reflect > 59196 207657 1 0 3 0x100080 sbwait nonxt-reflect > 31569 221372 1 0 3 0x100080 sbwait nonxt-reflect > 60078 510051 1 0 3 0x100080 sbwait nonxt-reflect > 18126 216430 1 0 3 0x100080 sbwait nonxt-reflect > 56562 400324 1 0 3 0x100080 sbwait nonxt-reflect > 12636 119878 1 0 3 0x100080 sbwait nonxt-reflect > 45572 441128 1 0 3 0x100080 sbwait nonxt-reflect > 98692 251547 1 0 3 0x100080 sbwait nonxt-reflect > 39639 82843 1 0 3 0x100080 sbwait nonxt-reflect > 45143 240736 1 0 3 0x100080 sbwait nonxt-reflect > 29376 326811 1 0 3 0x100083 ttyin getty > 12496 268639 1 0 3 0x100083 ttyin getty > 56108 205644 1 0 3 0x100083 ttyin getty > 76205 314878 1 0 3 0x100083 ttyin getty > 64883 66456 1 0 3 0x100083 ttyin getty > 13267 414032 1 0 3 0x100083 ttyin getty > 66082 58473 1 0 3 0x100098 kqread cron > 979 469547 1 99 3 0x1100090 kqread sndiod > 37224 45166 1 110 3 0x100090 kqread sndiod > 1699 508507 1 0 3 0x100090 kqread inetd > 32334 119708 49761 95 3 0x1100092 kqread smtpd > 30066 319295 49761 103 3 0x1100092 kqread smtpd > 67930 412470 49761 95 3 0x1100092 kqread smtpd > 38316 51104 49761 95 3 0x100092 kqread smtpd > 15445 172316 49761 95 3 0x1100092 kqread smtpd > 29803 57293 49761 95 3 0x1100092 kqread smtpd > 49761 170728 1 0 3 0x100080 kqread smtpd > 65427 125797 7088 91 3 0x92 kqread snmpd_metrics > 33807 237916 7088 91 3 0x1100092 kqread snmpd > 7088 314858 1 0 3 0x100080 kqread snmpd > 11977 391166 1 0 3 0x88 kqread sshd > 81560 144544 0 0 3 0x14280 nfsidl nfsio > 21235 235053 0 0 3 0x14280 nfsidl nfsio > 41069 502268 0 0 3 0x14280 nfsidl nfsio > 9696 32546 0 0 3 0x14280 nfsidl nfsio > 37310 340373 1 0 3 0x100080 kqread ntpd > 15526 180301 17877 83 3 0x100092 kqread ntpd > 17877 16264 1 83 3 0x1100092 kqread ntpd > 38842 364068 40769 73 3 0x1100090 kqread syslogd > 40769 7485 1 0 3 0x100082 sbwait syslogd > 20703 192686 94038 77 3 0x100092 kqread dhcpleased > 52744 11081 94038 77 3 0x100092 kqread dhcpleased > 94038 201224 1 0 3 0x80 kqread dhcpleased > 18957 15911 55690 115 3 0x100092 kqread slaacd > 34057 360563 55690 115 3 0x100092 kqread slaacd > 55690 212231 1 0 3 0x100080 kqread slaacd > 3259 201082 0 0 3 0x14200 bored smr > 78185 495270 0 0 3 0x14200 pgzero zerothread > 19436 104320 0 0 7 0x14200 aiodoned > 3799 200317 0 0 3 0x14200 syncer update > 82810 143382 0 0 3 0x14200 cleaner cleaner > 71366 112767 0 0 3 0x14200 reaper reaper > 81657 266197 0 0 3 0x14200 oom pagedaemon > 58838 404398 0 0 3 0x14200 bored wsdisplay0 > 96573 343657 0 0 3 0x14200 usbtsk usbtask > 78921 150982 0 0 3 0x14200 usbatsk usbatsk > 35559 168356 0 0 3 0x14200 bored sensors > 10278 273080 0 0 3 0x40014200 acpi0 acpi0 > 76715 268449 0 0 3 0x40014200 idle11 > 53940 130888 0 0 3 0x40014200 idle10 > 83736 220735 0 0 7 0x40014200 idle9 > 92316 378080 0 0 3 0x40014200 idle8 > 81561 469392 0 0 7 0x40014200 idle7 > 61983 171632 0 0 7 0x40014200 idle6 > 89495 231645 0 0 3 0x40014200 idle5 > 82249 218984 0 0 7 0x40014200 idle4 > 16639 172584 0 0 3 0x40014200 idle3 > 83238 353066 0 0 7 0x40014200 idle2 > 48908 439575 0 0 3 0x40014200 idle1 > 93383 34611 0 0 3 0x14200 bored softnet7 > 57507 510162 0 0 3 0x14200 bored softnet6 > 97429 515255 0 0 3 0x14200 bored softnet5 > 425 242474 0 0 3 0x14200 bored softnet4 > 271 189633 0 0 3 0x14200 bored softnet3 > 61916 381610 0 0 3 0x14200 bored softnet2 > 55504 51393 0 0 3 0x14200 bored softnet1 > 68091 47725 0 0 3 0x14200 bored softnet0 > 761 297576 0 0 3 0x14200 bored systqmp > 39354 185730 0 0 3 0x14200 bored systq > 99394 433067 0 0 3 0x14200 tmoslp softclockmp > 47009 235670 0 0 3 0x40014200 tmoslp softclock > 44996 301820 0 0 7 0x40014200 idle0 > 31097 447468 0 0 3 0x14200 kmalloc kmthread > 1 362302 0 0 3 0x82 wait init > 0 0 -1 0 3 0x10200 scheduler swapper > > ddb{5}> show uvm > Current UVM status: > pagesize=4096 (0x1000), pagemask=0xfff, pageshift=12 > 765702 VM pages: 457558 active, 219745 inactive, 1 wired, 5 free (4 zero) > freemin=25523, free-target=34030, inactive-target=225690, wired-max=255234 > faults=158583215, traps=160380218, intrs=3521274, ctxswitch=45698214 > fpuswitch=378748 > softint=6919460, syscalls=184223423, kmapent=13 > fault counts: > noram=193025, noanon=0, noamap=0, pgwait=0, pgrele=0 > relocks=437348(5254), upgrades=0(0) anget(retries)=84112012(55721), > amapcopy=8611362 > neighbor anon/obj pg=6070098/112857440, gets(lock/unlock)=39637959/389216 > cases: anon=82202014, anoncow=1909994, obj=38738890, prcopy=891480, > przero=34840850 > daemon and swap counts: > woke=24835, revs=24829, scans=6541847, obscans=129078, anscans=5170920 > busy=0, freed=982448, reactivate=1241740, deactivate=2743741 > pageouts=178607, pending=55260, nswget=42090 > nswapdev=1 > swpages=849685, swpginuse=829724, swpgonly=811492 paging=11 > kernel pointers: > objs(kern)=0xd0fb8804 > > ddb{5}> x/i pmap_remove_ptes_pae+4f > pmap_remove_ptes_pae+0x4f: movl 0(%edi),%eax > > /usr/src/sys/arch/i386/i386/pmapae.c:1158 > 2cd9: 39 d6 cmp %edx,%esi > 2cdb: 0f 83 c7 00 00 00 jae 2da8 > <pmap_remove_ptes_pae+0x108> > 2ce1: 85 c9 test %ecx,%ecx > 2ce3: 74 0a je 2cef > <pmap_remove_ptes_pae+0x4f> > 2ce5: 83 79 30 02 cmpl $0x2,0x30(%ecx) > 2ce9: 0f 82 b9 00 00 00 jb 2da8 > <pmap_remove_ptes_pae+0x108> > /usr/src/sys/arch/i386/i386/pmapae.c:1160 > * 2cef: 8b 07 mov (%edi),%eax > 2cf1: a8 01 test $0x1,%al > 2cf3: 74 db je 2cd0 > <pmap_remove_ptes_pae+0x30> > 2cf5: c1 e8 09 shr $0x9,%eax > 2cf8: 23 45 1c and 0x1c(%ebp),%eax > /usr/src/sys/arch/i386/i386/pmapae.c:1163 > > 1158 for (/*null*/; startva < endva && (ptp == NULL || > ptp->wire_count > 1) > 1159 ; pte++, startva += NBPG) { > * 1160 if (!pmap_valid_entry(*pte)) > 1161 continue; /* VA not > mapped */ > 1162 > 1163 if ((flags & PMAP_REMOVE_SKIPWIRED) && (*pte & PG_W)) > 1164 continue; > > ddb{5}> show struct pmap 0xd0f6fda0 > struct pmap at 0xd0f6fda0 (164 bytes) {pm_pdidx = > [19279873,19283969,19288065,19292161], pm_pdidx_intel = > [77713409,77717505,77721601,77725697], pm_mtx = {mtx_owner = (void *)0x0, > mtx_wantipl = 128, mtx_oldipl = 0}, pm_apte_mtx = {mtx_owner = (void *)0x0, > mtx_wantipl = 144, mtx_oldipl = 144}, pm_pdirpa = 16186784, pm_pdirpa_intel = > 16186816, pm_pdir = 3508940800, pm_pdir_intel = 4132618240, pm_pdirsize = > 16384, pm_obj = {vmobjlock = (struct rwlock *)0x0, pgops = (const > uvm_pagerops *)0xd0d787ac, memt = {rbh_root = {rbt_root = (struct rb_entry > *)0xd4c58f84}}, uo_npages = 523, uo_refs = 5}, pm_list = {le_next = (struct > pmap *)0x0, le_prev = 0x0}, pm_ptphint = (struct vm_page *)0xd4c585fc, > pm_stats = {resident_count = 5646, wired_count = 5140}, pm_hiexec = 0, > pm_flags = 0, pm_codeseg = {sd_lolimit = 0, sd_lobase = 0, sd_type = 0, > sd_dpl = 0, sd_p = 0, sd_hilimit = 0, sd_xx = 0, sd_def32 = 0, sd_gran = 0, > sd_hibase = 0}} > > bluhm >
