On Mon, May 14, 2018 at 01:05:07PM +0200, Otto Moerbeek wrote:
> 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
ok tb
>
>
> 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
>