After updating to uvm_pdaemon.c r1.147, the troublesome behaviour has
changed to a panic.

fatal address error (store) in kernel mode
va 0x6565726a spc 0x8c046d10 ssr 0x400001c0 pr 0x8c046ce0 
panic: general_exception
Stopped at      db_enter+0x8:   add     #0x4, r14
    TID    PID    UID     PRFLAGS     PFLAGS  CPU  COMMAND
*271667  72941      0     0x14000      0x200    0  pagedaemon
db_enter() at db_enter+0x8
panic() at panic+0x74
general_exception() at general_exception+0x154
(EXPEVT 100; SSR=400001c0) at uvmpd_scan+0x90
uvmpd_scan() at uvmpd_scan+0x90
uvm_pageout() at uvm_pageout+0x146
ddb> show uvmexp
Current UVM status:
  pagesize=4096 (0x1000), pagemask=0xfff, pageshift=12
  14865 VM pages: 0 active, 162 inactive, 1 wired, 9931 free (518 zero)
  freemin=495, free-target=660, inactive-target=661, wired-max=4955
  faults=55011597, traps=29257669, intrs=8677232, ctxswitch=3881654 fpuswitch=0

  softint=3977848, syscalls=29257667, kmapent=10
  fault counts:
    noram=163461, noanon=0, noamap=0, pgwait=43, pgrele=0
    relocks=453114(2878), upgrades=0(0) anget(retries)=28000701(44995), amapcop
y=11763286
    neighbor anon/obj pg=23087572/37035478, gets(lock/unlock)=10632859/409283
    cases: anon=21887100, anoncow=6111864, obj=9274150, prcopy=1357545, przero=
16348687
  daemon and swap counts:
    woke=176626, revs=166731, scans=231976, obscans=74891, anscans=124650
    busy=0, freed=130110, reactivate=32420, deactivate=622324
    pageouts=9616, pending=6524, nswget=21059
    nswapdev=1
    swpages=4194415, swpginuse=4956, swpgonly=4794 paging=0
  kernel pointers:
    objs(kern)=0x8c3d0d08
ddb> show bcstats
Current Buffer Cache status:
numbufs 171 busymapped 1, delwri 53
kvaslots 185 avail kva slots 184
bufpages 678, dmapages 678, dirtypages 212
pendingreads 1, pendingwrites 3
highflips 0, highflops 0, dmaflips 0
ddb> ps
   PID     TID   PPID    UID  S       FLAGS  WAIT          COMMAND
 99427  505468  33120   1500  3    0x100003  pmrwait       ssh
 33120  310151  21883   1500  3    0x100003  biowait       cvs
 21883  309994    986   1500  3    0x10008b  sigsusp       ksh
 60112  391117  96178   1500  3    0x100083  ttyin         ksh
   986    2677  25804   1500  3        0x98  kqread        sshd-session
 96178  133690  97540   1500  3        0x98  kqread        sshd-session
 97540   71703  84592      0  3        0x92  kqread        sshd-session
 25804  371332  84592      0  3        0x92  kqread        sshd-session
 67204  373407      1      0  3    0x100083  ttyin         getty
 63847   42633      1      0  3    0x100098  kqread        cron
 48671   12896      1      0  3    0x100090  kqread        inetd
 51125   44754   7241     95  3   0x1100092  kqread        smtpd
 28283  359944   7241    103  3   0x1100092  kqread        smtpd
 20773   34325   7241     95  3   0x1100092  kqread        smtpd
 24281  206812   7241     95  3    0x100092  kqread        smtpd
 19681  149626   7241     95  3   0x1100092  kqread        smtpd
 61177  426273   7241     95  3   0x1100092  kqread        smtpd
  7241   11890      1      0  3    0x100080  kqread        smtpd
 84592   21640      1      0  3        0x88  kqread        sshd
 38299  189961      0      0  3     0x14280  nfsidl        nfsio
 63315  138916      0      0  3     0x14280  nfsidl        nfsio
 92124    9201      0      0  3     0x14280  nfsidl        nfsio
 30331  367083      0      0  3     0x14280  nfsidl        nfsio
 14489   52660      1      0  3           0  fltagain2     ypbind
 67810  428699      1     28  3   0x1100090  kqread        portmap
 79588  279376      1      0  3    0x100080  kqread        ntpd
 80741  425125  81050     83  3    0x100092  kqread        ntpd
 81050  443217      1     83  3   0x1100092  kqread        ntpd
 20218   52999  98776     74  3   0x1100092  bpf           pflogd
 98776    5178      1      0  3        0x80  sbwait        pflogd
 87156  326116  80721     73  3   0x1100010  fltagain2     syslogd
 80721  253238      1      0  3    0x100082  sbwait        syslogd
 74645  374301  64778    115  3    0x100092  kqread        slaacd
  4447  463275  64778    115  3    0x100092  kqread        slaacd
 64778  271185      1      0  3    0x100080  kqread        slaacd
 47012  194483      0      0  3     0x14200  bored         smr
 52369    5575      0      0  2     0x14200                zerothread
 89608   53581      0      0  3     0x14200  aiodoned      aiodoned
 79664  325614      0      0  3     0x14200  syncer        update
 86280  288271      0      0  3     0x14200  cleaner       cleaner
 48757  475510      0      0  3     0x14200  reaper        reaper
*72941  271667      0      0  7     0x14200                pagedaemon
  5334  467380      0      0  3     0x14200  usbtsk        usbtask
 51034  228561      0      0  3     0x14200  usbatsk       usbatsk
 90821  432811      0      0  3     0x14200  bored         softnet0
 62248  265456      0      0  3     0x14200  bored         systqmp
 37130  370371      0      0  3     0x14200  bored         systq
 53149  302617      0      0  3  0x40014200  tmoslp        softclock
 43410  133767      0      0  3  0x40014200                idle0
     1  507787      0      0  3        0x82  wait          init
     0       0     -1      0  3     0x10200  scheduler     swapper

The address causing the fault appears to be line 912 of uvm_pdaemon.c,
which is
        TAILQ_INSERT_AFTER(pglst, p, &iter, pageq);
and should probably not surprising as we have

        struct pglist *pglst = &uvm.page_active;
        p = TAILQ_FIRST(pglst);

but - as shown in "show uvmexp" above - page_active is empty. I am
retesting after adding

        if (p == NULL)
                return;

before TAILQ_INSERT_AFTER.

Reply via email to