On Mon, May 14, 2018 at 01:05:07PM +0200, Otto Moerbeek wrote: > This fixes the panic.
All i386 regress tests pass with this. http://bluhm.genua.de/regress/results/latest.html > The error returned is not expected by the test > suite (ENOMEM vs EOVERFLOW), but that's another matter imo. Currently I only care about running the tests. Still have to fix bugs to make them all compile. Maybe I look at their expected results later. bluhm > 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
