NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
port-mac68k/49480: reproducable panic
>Number: 49480
>Category: port-mac68k
>Synopsis: reproducable panic
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: port-mac68k-maintainer
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Dec 16 12:20:01 +0000 2014
>Originator: martin%NetBSD.org@localhost
>Release: NetBSD 7.99.3
>Organization:
The NetBSD Foundation, Inc.
>Environment:
System: NetBSD mac-beth.duskware.de 7.99.3 NetBSD 7.99.3 (GENERIC) #1: Tue Dec 16 12:00:51 CET 2014 martin%night-owl.duskware.de@localhost:/usr/src/sys/arch/mac68k/compile/GENERIC mac68k
Architecture: m68k
Machine: mac68k
>Description:
I have a reproducable panic on my mac68k when running the libevent tests:
panic: enter: out of address space
cpu0: Begin traceback...
?(?)
db_panic(e049000,1c,ffffffff,26c501c,472ccac) at 0
vpanic(2a309e,472ccb8,472cd00,188ba4,2a309e) + 15e
panic(2a309e,e049000,22,1,0) + c
pmap_enter_ptpage(91df54,e049000,1) + 10e
pmap_enter(91df54,e049000,1118000,3,22,7c01d0) + da
uvm_fault_lower_enter.isra.9(?)
bufinit(472ce08,472ce24,0,7c01d0) + 5a
uvm_fault_internal(8ebca8,e049000,2,0,45b4e08) + cf2
trap(472cf80,8,481,e049ffc) + 590
faultstkadj() + 4
If I adjust the pmap_enter_ptpage function to check it's "can_fail" argument
and make it return ENOMEM (see patch below) it turns into an endless sleep.
The panic happens in the h_event helper, which uses a few threads, when
extending the stack. The same test seems to work on other mac68k machines
(memory differences? kernel tuning paramaters?) and on amiga.
I think mhitch told me we should extend the '40 pmap and add another
level of indirection, but I am not sure this is the same problem we talked
about last time ;-)
So, any suggestions?
Martin
sleepq_block(0,0,342d7c,8a5000,342ec8,295632,3186a4,84809c,848474) + 16e
mtsleep(342ec8,204,295632,0,342d7c) + 8a
uvm_pageout(8a5000) + 8e
lwp_trampoline() + e
db> show uvm
Current UVM status:
pagesize=4096 (0x1000), pagemask=0xfff, pageshift=12
, ncolors=1 10093 VM pages: 2660 active, 1639 inactive, 1897 wired, 1898 free
pages 3144 anon, 1427 file, 1699 exec
freemin=50, free-target=66, wired-max=3364
cpu0:
faults=195892, traps=218360, intrs=333294, ctxswitch=6258957
softint=71075, syscalls=810880
fault counts:
noram=0, noanon=0, pgwait=0, pgrele=0
ok relocks(total)=1138(1138), anget(retrys)=3133103(8), amapcopy=26402
neighbor anon/obj pg=40596/355739, gets(lock/unlock)=102953/1130
cases: anon=3114135, anoncow=18924, obj=82671, prcopy=20282, przero=42280
daemon and swap counts:
woke=3083144, revs=4, scans=2316, obscans=410, anscans=239
busy=0, freed=649, reactivate=0, deactivate=4431
pageouts=16, pending=224, nswget=9
nswapdev=1, swpgavail=32767
swpages=32767, swpginuse=240, swpgonly=231, paging=0
Index: pmap_motorola.c
===================================================================
RCS file: /cvsroot/src/sys/arch/m68k/m68k/pmap_motorola.c,v
retrieving revision 1.67
diff -u -r1.67 pmap_motorola.c
--- pmap_motorola.c 25 Oct 2013 20:51:14 -0000 1.67
+++ pmap_motorola.c 16 Dec 2014 10:59:56 -0000
@@ -2471,8 +2471,11 @@
void *addr;
ix = bmtol2(pmap->pm_stfree);
- if (ix == -1)
+ if (ix == -1) {
+ if (can_fail)
+ return ENOMEM;
panic("enter: out of address space"); /* XXX */
+ }
pmap->pm_stfree &= ~l2tobm(ix);
addr = (void *)&pmap->pm_stab[ix*SG4_LEV2SIZE];
memset(addr, 0, SG4_LEV2SIZE*sizeof(st_entry_t));
>How-To-Repeat:
cd /usr/tests/lib/libevent
atf-run | atf-report
>Fix:
n/a
Home |
Main Index |
Thread Index |
Old Index