On Wed, Jul 24, 2019 at 08:59:44PM +0200, Alexander Bluhm wrote:
> The reaper on CPU 0 does a NULL dereference when removing the page.
> On CPU 1 zerothread is waiting for kernel lock. CPU 2 and 3 are
> idle.
>
> uvm_fault(0xfffffd8240760cc8, 0x7f827ea48908, 0, 2) -> e
> kernel: page fault trap, code=0
> Stopped at pmap_page_remove+0x210: xchgq %rax,0(%rcx,%rdx,1)
Forgot to mention, that was C source line pmap.c:1878
opte = pmap_pte_set(&PTE_BASE[pl1_i(pve->pv_va)], 0);
> I will update kernel and look if panic is reproducable.
It is reproduceable
ddb{3}> x/s version
version: OpenBSD 6.5-current (GENERIC.MP) #139: Wed Jul 24 05:11:28 MDT 2
019\012 [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
\012
ddb{3}> show panic
kernel page fault
uvm_fault(0xfffffd823efc7998, 0x7f8444c11f08, 0, 1) -> e
pmap_enter(fffffd823e1ce3f8,889823e1000,5f3c2000,3,22) at pmap_enter+0x1d6
end trace frame: 0xffff80002210ed30, count: 0
Now it happens in pmap.c:2624
opte = PTE_BASE[pl1_i(va)]; /* old PTE */
Something in PTE_BASE array is not mapped.
ddb{3}> trace
pmap_enter(fffffd823e1ce3f8,889823e1000,5f3c2000,3,22) at pmap_enter+0x1d6
uvm_fault(fffffd823efc7998,889823e1000,0,2) at uvm_fault+0xa2a
pageflttrap() at pageflttrap+0x145
usertrap(ffff80002210ee20) at usertrap+0x1e3
recall_trap(6,dfdfdfdfdfdfdfdf,0,6,1000,8890b6fc7c0) at recall_trap+0x8
end of kernel
end trace frame: 0x888fdfc9330, count: -5
Note that at June 11th I reported a similiar trace in pmap to bugs@
when ld caused a crash.
ddb{3}> ps
PID TID PPID UID S FLAGS WAIT COMMAND
76368 342680 5059 0 2 0x2 malloc_duel
76368 101339 5059 0 7 0x4000002 malloc_duel
76368 514296 5059 0 3 0x4000082 fsleep malloc_duel
*76368 384915 5059 0 7 0x4000002 malloc_duel
76368 221830 5059 0 7 0x4000002 malloc_duel
76368 361827 5059 0 7 0x4000002 malloc_duel
76368 480274 5059 0 3 0x4000082 fsleep malloc_duel
76368 468117 5059 0 3 0x4000082 fsleep malloc_duel
76368 461971 5059 0 3 0x4000082 fsleep malloc_duel
76368 266728 5059 0 2 0x4000002 malloc_duel
76368 82327 5059 0 2 0x4000002 malloc_duel
5059 194815 4702 0 3 0x10008a pause make
4702 434789 57398 0 3 0x10008a pause sh
57398 272052 80135 0 3 0x10008a pause make
80135 83438 74843 0 3 0x10008a pause sh
74843 269959 24644 0 3 0x10008a pause make
71213 91038 31378 0 3 0x100082 piperd gzip
31378 297755 24644 0 3 0x100082 piperd pax
24644 139228 73204 0 3 0x82 piperd perl
73204 241400 3907 0 3 0x10008a pause ksh
3907 427314 77842 0 3 0x92 select sshd
49732 259852 1 0 3 0x100083 ttyin getty
58444 180559 1 0 3 0x100083 ttyin getty
30659 289121 1 0 3 0x100083 ttyin getty
9656 108850 1 0 3 0x100083 ttyin getty
24203 10241 1 0 3 0x100083 ttyin getty
65063 251469 1 0 3 0x100083 ttyin getty
16142 523320 1 0 3 0x100098 poll cron
90805 3316 0 0 3 0x14280 nfsidl nfsio
11202 322177 0 0 3 0x14280 nfsidl nfsio
73491 331359 0 0 3 0x14280 nfsidl nfsio
37841 249018 0 0 3 0x14280 nfsidl nfsio
4136 428500 1 99 3 0x100090 poll sndiod
12112 519438 1 110 3 0x100090 poll sndiod
49306 97767 137 95 3 0x100092 kqread smtpd
70869 189393 137 103 3 0x100092 kqread smtpd
79867 131344 137 95 3 0x100092 kqread smtpd
66859 375509 137 95 3 0x100092 kqread smtpd
22396 48018 137 95 3 0x100092 kqread smtpd
16604 93317 137 95 3 0x100092 kqread smtpd
137 452544 1 0 3 0x100080 kqread smtpd
77842 219221 1 0 3 0x80 select sshd
88298 318549 0 0 3 0x14200 acct acct
7436 211089 1 0 3 0x100080 poll ntpd
15596 214430 72873 83 3 0x100092 poll ntpd
72873 423080 1 83 3 0x100092 poll ntpd
639 455748 5843 74 3 0x100092 bpf pflogd
5843 152563 1 0 3 0x80 netio pflogd
49089 65344 96782 73 3 0x100090 kqread syslogd
96782 134250 1 0 3 0x100082 netio syslogd
15309 57931 1 77 3 0x100090 poll dhclient
92131 300080 1 0 3 0x80 poll dhclient
440 434925 45137 115 3 0x100092 kqread slaacd
23230 157398 45137 115 3 0x100092 kqread slaacd
45137 283018 1 0 3 0x100080 kqread slaacd
11751 424885 0 0 3 0x14200 pgzero zerothread
94669 233757 0 0 3 0x14200 aiodoned aiodoned
39044 189625 0 0 3 0x14200 syncer update
11265 246421 0 0 3 0x14200 cleaner cleaner
86967 386950 0 0 3 0x14200 reaper reaper
48511 221734 0 0 3 0x14200 pgdaemon pagedaemon
27362 255648 0 0 3 0x14200 bored crynlk
58949 107875 0 0 3 0x14200 bored crypto
88305 317139 0 0 3 0x14200 bored sensors
62804 248570 0 0 3 0x14200 usbtsk usbtask
717 253829 0 0 3 0x14200 usbatsk usbatsk
48070 263826 0 0 3 0x40014200 acpi0 acpi0
65386 442770 0 0 3 0x40014200 idle3
33089 148765 0 0 3 0x40014200 idle2
65055 498669 0 0 3 0x40014200 idle1
10578 506553 0 0 3 0x14200 bored softnet
70559 53653 0 0 3 0x14200 bored systqmp
6788 104 0 0 3 0x14200 bored systq
23919 173929 0 0 3 0x40014200 bored softclock
87424 241507 0 0 3 0x40014200 idle0
44349 256295 0 0 3 0x14200 bored smr
1 488173 0 0 3 0x82 wait init
0 0 -1 0 3 0x10200 scheduler swapper
bluhm