On Sun, May 13, 2018 at 10:34:13PM +0200, Alexander Bluhm wrote:
> Hi,
>
> When executing the posixtestsuite port, the i386 kernel crashes.
> It is this one:
>
> /usr/local/libexec/posixtestsuite/conformance/interfaces/mmap/31-1.test
>
> bluhm
This fixes the panic. The error returned is not expected by the test
suite (ENOMEM vs EOVERFLOW), but that's another matter imo.
-Otto
Index: uvm_addr.c
===================================================================
RCS file: /cvs/src/sys/uvm/uvm_addr.c,v
retrieving revision 1.26
diff -u -p -r1.26 uvm_addr.c
--- uvm_addr.c 17 Apr 2018 15:50:05 -0000 1.26
+++ uvm_addr.c 14 May 2018 11:02:57 -0000
@@ -1376,7 +1376,8 @@ uaddr_stack_brk_select(struct vm_map *ma
#else
dir = 1;
#endif
- if (end - start >= sz + before_gap + after_gap) {
+ if (end - start >= before_gap + after_gap &&
+ end - start - before_gap - after_gap >= sz) {
if (uvm_addr_linsearch(map, uaddr, entry_out, addr_out,
0, sz, align, offset, dir, start, end - sz,
before_gap, after_gap) == 0)
>
> root@ot1:.../~# te/conformance/interfaces/mmap/31-1.test
> <
> off: fffff000, lpanic: kernel diagnostic assertion "high + sz > high" failed:
> file "/usr/src/sys/uvm/uvm_addr.c", line 341
> Stopped at db_enter+0x4: popl %ebp
> TID PID UID PRFLAGS PFLAGS CPU COMMAND
> *268073 10715 0 0x3 0 1K 31-1.test
> db_enter() at db_enter+0x4
> panic() at panic+0xcc
> __assert(d0aa7bd0,d0c3e973,155,d0c3ea65) at __assert+0x19
> uvm_addr_linsearch(d55a5448,0,f55ecdd4,f55ecefc,0,fffff000,1000,0,1,cd6ce000,cf
> 7cf000,1000,2000) at uvm_addr_linsearch+0x20f
> uaddr_stack_brk_select(d55a5448,d571bc54,f55ecdd4,f55ecefc,fffff000,1000,0,3,0)
> at uaddr_stack_brk_select+0x139
> uvm_addr_invoke(d55a5448,d571bc54,f55ecdd4,f55ecdd0,f55ecefc,fffff000,1000,0,3,
> 0) at uvm_addr_invoke+0x49
> uvm_map_findspace(d55a5448,f55ecdd4,f55ecdd0,f55ecefc,fffff000,1000,0,3,0) at
> u
> vm_map_findspace+0xc9
> uvm_map(d55a5448,f55ecefc,fffff000,d508b8d0,fffff000,0,0) at uvm_map+0x350
> uvm_mmapfile(d55a5448,f55ecefc,fffff000,3,7,1,d52965a4,fffff000,0,298ef000)
> at u
> vm_mmapfile+0x183
> sys_mmap(d5484cd8,f55ecf50,f55ecf48) at sys_mmap+0x640
> syscall() at syscall+0x25e
> --- syscall (number 1398493569) ---
> end of kernel
> 0xcf7cc684:
> 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}> x/s version
> version: OpenBSD 6.3-current (GENERIC.MP) #600: Sat May 12 10:21:32
> MDT 2
> 018\012
> [email protected]:/usr/src/sys/arch/i386/compile/GENERIC.MP\0
> 12
> ddb{1}> trace
> db_enter() at db_enter+0x4
> panic() at panic+0xcc
> __assert(d0aa7bd0,d0c3e973,155,d0c3ea65) at __assert+0x19
> uvm_addr_linsearch(d55a5448,0,f55ecdd4,f55ecefc,0,fffff000,1000,0,1,cd6ce000,cf
> 7cf000,1000,2000) at uvm_addr_linsearch+0x20f
> uaddr_stack_brk_select(d55a5448,d571bc54,f55ecdd4,f55ecefc,fffff000,1000,0,3,0)
> at uaddr_stack_brk_select+0x139
> uvm_addr_invoke(d55a5448,d571bc54,f55ecdd4,f55ecdd0,f55ecefc,fffff000,1000,0,3,
> 0) at uvm_addr_invoke+0x49
> uvm_map_findspace(d55a5448,f55ecdd4,f55ecdd0,f55ecefc,fffff000,1000,0,3,0) at
> u
> vm_map_findspace+0xc9
> uvm_map(d55a5448,f55ecefc,fffff000,d508b8d0,fffff000,0,0) at uvm_map+0x350
> uvm_mmapfile(d55a5448,f55ecefc,fffff000,3,7,1,d52965a4,fffff000,0,298ef000)
> at u
> vm_mmapfile+0x183
> sys_mmap(d5484cd8,f55ecf50,f55ecf48) at sys_mmap+0x640
> syscall() at syscall+0x25e
> --- syscall (number 1398493569) ---
> end of kernel
> 0xcf7cc684:
> ddb{1}> ps
> PID TID PPID UID S FLAGS WAIT COMMAND
> *10715 268073 99201 0 7 0x3 31-1.test
> 88582 518825 77338 0 3 0x100083 ttyin ksh
> 77338 466323 1 0 3 0x100080 kqread tmux
> 75876 102140 1175 0 3 0x100083 kqread tmux
> 1175 124590 38749 0 3 0x10008b pause ksh
> 38749 474856 81963 0 3 0x92 select sshd
> 99201 273058 1 0 3 0x10008b pause ksh
> 33609 390960 1 0 3 0x100083 ttyin getty
> 77350 137546 1 0 3 0x100083 ttyin getty
> 8930 416025 1 0 3 0x100083 ttyin getty
> 84787 451172 1 0 3 0x100083 ttyin getty
> 28512 2588 1 0 3 0x100083 ttyin getty
> 16195 237415 1 0 3 0x100098 poll cron
> 53204 231786 1 99 3 0x100090 poll sndiod
> 89266 431418 1 110 3 0x100090 poll sndiod
> 72070 285105 22615 95 3 0x100092 kqread smtpd
> 87435 65358 22615 103 3 0x100092 kqread smtpd
> 49475 425645 22615 95 3 0x100092 kqread smtpd
> 52187 409830 22615 95 3 0x100092 kqread smtpd
> 77608 407112 22615 95 3 0x100092 kqread smtpd
> 7272 500885 22615 95 3 0x100092 kqread smtpd
> 22615 268385 1 0 3 0x100080 kqread smtpd
> 81963 34204 1 0 3 0x80 select sshd
> 70679 131909 0 0 3 0x14200 acct acct
> 13990 427341 0 0 3 0x14280 nfsidl nfsio
> 37126 391604 0 0 3 0x14280 nfsidl nfsio
> 50674 97602 0 0 3 0x14280 nfsidl nfsio
> 67161 386556 0 0 3 0x14280 nfsidl nfsio
> 95889 337545 1 0 3 0x100080 poll ntpd
> 67025 75321 46130 83 3 0x100092 poll ntpd
> 46130 225304 1 83 3 0x100092 poll ntpd
> 52906 158025 63070 74 3 0x100092 bpf pflogd
> 63070 235056 1 0 3 0x80 netio pflogd
> 83359 29326 30054 73 3 0x100090 kqread syslogd
> 30054 71190 1 0 3 0x100082 netio syslogd
> 3676 132549 1 77 3 0x100090 poll dhclient
> 35895 91574 1 0 3 0x80 poll dhclient
> 5974 509843 59073 115 3 0x100092 kqread slaacd
> 26756 312288 59073 115 3 0x100092 kqread slaacd
> 59073 506526 1 0 3 0x80 kqread slaacd
> 53920 508940 0 0 3 0x14200 bored radeon-crtc
> 93915 183654 0 0 3 0x14200 bored ttm_swap
> 56066 319851 0 0 3 0x14200 pgzero zerothread
> 329 332710 0 0 3 0x14200 aiodoned aiodoned
> 9590 111062 0 0 3 0x14200 syncer update
> 70756 254117 0 0 3 0x14200 cleaner cleaner
> 96754 259869 0 0 3 0x14200 reaper reaper
> 10343 436008 0 0 3 0x14200 pgdaemon pagedaemon
> 48365 279419 0 0 3 0x14200 bored crynlk
> 19601 383419 0 0 3 0x14200 bored crypto
> 82044 149445 0 0 3 0x14200 usbtsk usbtask
> 47570 436668 0 0 3 0x14200 usbatsk usbatsk
> 90740 91403 0 0 3 0x14200 bored sensors
> 91659 260363 0 0 3 0x40014200 acpi0 acpi0
> 47844 346772 0 0 3 0x40014200 idle1
> 29247 390058 0 0 3 0x14200 bored softnet
> 2408 161717 0 0 3 0x14200 bored systqmp
> 39922 496564 0 0 3 0x14200 bored systq
> 8283 35126 0 0 3 0x40014200 bored softclock
> 78265 58176 0 0 7 0x40014200 idle0
> 16084 227597 0 0 3 0x14200 kmalloc kmthread
> 1 336974 0 0 3 0x82 wait init
> 0 0 -1 0 3 0x10200 scheduler swapper
> ddb{1}> show register
> ds 0x10
> es 0x10
> fs 0x20
> gs 0
> edi 0xd0ab09a9 cdce_ca+0x1f5
> esi 0x100
> ebp 0xf55ecc54
> ebx 0xf55ecc7c
> edx 0x2
> ecx 0
> eax 0x1
> eip 0xd04e5864 db_enter+0x4
> cs 0x8
> eflags 0x202
> esp 0xf55ecc54
> ss 0x10
> db_enter+0x4: popl %ebp