On Mon, May 02, 2022 at 06:53:08AM +0200, Sebastien Marie wrote:
> New diff, with new iteration on vnode_history_*() functions. I added a label 
> in 
> the record function. I also changed when showing the stacktrace. powerpc has 
> poor backtrace support, but now it will at least print some infos even if no 
> stacktrace recorded (pid, ps_comm, label, v_usecount).
> 
> I added a vnode_history_record() entry inside vclean(). We should have it in 
> both case:
> - if vnode is already inactive (vp->v_usecount == 0) [trace already recorded]
> - if vnode is still active (vp->v_usecount != 0) [trace previously not 
> recorded]

http://bluhm.genua.de/release/results/2022-05-02T12%3A23%3A22Z/bsdcons-ot26.txt

[-- MARK -- Tue May  3 16:45:00 2022]
uvn_io: start: 0x23b5a9c0, type VREG, use 0, write 0, hold 0, flags 
(VBIOONFREELIST)
        tag VT_UFS, ino 365327, on dev 0, 10 flags 0x100, effnlink 1, nlink 1
        mode 0100660, owner 21, group 21, size 13647873
==> vnode_history_print 0x23b5a9c0, next=6
 [0] c++[83314] vget, usecount 1>2
#0  mtx_enter_try+0x5c
 [1] c++[83314] vget, usecount 2>3
#0  mtx_enter_try+0x5c
 [2] c++[83314] vrele, usecount 3>2
<empty stack trace>
 [3] c++[83314] vput, usecount 2>1
<empty stack trace>
 [4] reaper[690] uvn_detach (UVM_VNODE_CANPERSIST), usecount 1>1
#0  0xfffffffc
#1  umidi_quirklist+0x148
#2  uvn_detach+0x13c
#3  uvm_unmap_detach+0x1a4
#4  uvm_map_teardown+0x184
#5  uvmspace_free+0x60
#6  uvm_exit+0x30
#7  reaper+0x138
#8  fork_trampoline+0x14
 [5] reaper[690] vrele, usecount 1>0
<empty stack trace>
 [6>] c++[73867] vget, usecount 1>2
#0  mtx_enter_try+0x5c
 [7] c++[73867] vrele, usecount 2>1
<empty stack trace>
 [8] c++[73867] vref, usecount 1>2
<empty stack trace>
 [9] c++[73867] vput, usecount 2>1
<empty stack trace>
vn_lock: v_usecount == 0: 0x23b5a9c0, type VREG, use 0, write 0, hold 0, flags 
(VBIOONFREELIST)
        tag VT_UFS, ino 365327, on dev 0, 10 flags 0x100, effnlink 1, nlink 1
        mode 0100660, owner 21, group 21, size 13647873
==> vnode_history_print 0x23b5a9c0, next=6
 [0] c++[83314] vget, usecount 1>2
#0  mtx_enter_try+0x5c
 [1] c++[83314] vget, usecount 2>3
#0  mtx_enter_try+0x5c
 [2] c++[83314] vrele, usecount 3>2
<empty stack trace>
 [3] c++[83314] vput, usecount 2>1
<empty stack trace>
 [4] reaper[690] uvn_detach (UVM_VNODE_CANPERSIST), usecount 1>1
#0  0xfffffffc
#1  umidi_quirklist+0x148
#2  uvn_detach+0x13c
#3  uvm_unmap_detach+0x1a4
#4  uvm_map_teardown+0x184
#5  uvmspace_free+0x60
#6  uvm_exit+0x30
#7  reaper+0x138
#8  fork_trampoline+0x14
 [5] reaper[690] vrele, usecount 1>0
<empty stack trace>
 [6>] c++[73867] vget, usecount 1>2
#0  mtx_enter_try+0x5c
 [7] c++[73867] vrele, usecount 2>1
<empty stack trace>
 [8] c++[73867] vref, usecount 1>2
<     PFLAGS  CPU  COMMAND
 339124  89786     21         0x2          0    1  c++
*246215  93511      0     0x14000      0x200    0K pagedaemon
db_enter() at db_enter+0x20
panic(9466dc) at panic+0x158
vn_lock(7c564249,2b7000) at vn_lock+0x1c4
uvn_io(ae78a0,1,e7ebbc50,8650f8,e4010000) at uvn_io+0x254
uvn_put(e5274130,e7ebbdd4,23b952a0,4f1f9f0) at uvn_put+0x64
uvm_pager_put(0,0,e7ebbd70,267900,2000000,80000000,0) at uvm_pager_put+0x15c
uvmpd_scan_inactive(0) at uvmpd_scan_inactive+0x224
uvmpd_scan() at uvmpd_scan+0x15c
uvm_pageout(19350f3) at uvm_pageout+0x398
fork_trampoline() at fork_trampoline+0x14
end trace frame: 0x0, count: 5
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{0}> x/s version
version:        OpenBSD 7.1-current (GENERIC.MP) #0: Mon May  2 14:51:09 CEST 
2022\012    
r...@ot26.obsd-lab.genua.de:/usr/src/sys/arch/macppc/compile/GENERIC.MP\012

ddb{0}> show panic
*cpu0: vn_lock: v_usecount == 0

ddb{0}> trace
db_enter() at db_enter+0x20
panic(9466dc) at panic+0x158
vn_lock(7c564249,2b7000) at vn_lock+0x1c4
uvn_io(ae78a0,1,e7ebbc50,8650f8,e4010000) at uvn_io+0x254
uvn_put(e5274130,e7ebbdd4,23b952a0,4f1f9f0) at uvn_put+0x64
uvm_pager_put(0,0,e7ebbd70,267900,2000000,80000000,0) at uvm_pager_put+0x15c
uvmpd_scan_inactive(0) at uvmpd_scan_inactive+0x224
uvmpd_scan() at uvmpd_scan+0x15c
uvm_pageout(19350f3) at uvm_pageout+0x398
fork_trampoline() at fork_trampoline+0x14
end trace frame: 0x0, count: -10

ddb{0}> show register
r0              0x5325c0        panic+0x15c
r1            0xe7ebbb60
r2                     0
r3              0xaf80e8        cpu_info
r4              0xb00000        extract_entropy.extract_pool+0x1e24
r5                   0x1
r6                     0
r7            0xe7bb9000
r8                     0
r9                     0
r10                    0
r11           0x7986a131
r12            0xa536dde        _end+0x9a21fa6
r13                    0
r14             0xaf4e90        bcstats
r15             0xae0f7c        uvmexp
r16                    0
r17                    0
r18                    0
r19             0x2b7000        vn_lock+0x130
r20               0x2000        tlbdsmsize+0x1f18
r21               0x2000        tlbdsmsize+0x1f18
r22             0xa887ec        netlock
r23           0xe4010000
r24           0x23b952b8
r25           0x23b952bc
r26             0x927f4b        pppdumpm.digits+0xb332
r27                    0
r28                    0
r29             0xaf83a8        cpu_info+0x2c0
r30             0x9466dc        cy_pio_rec+0x11924
r31             0xae10a8        uvmexp+0x12c
lr              0x63c344        db_enter+0x24
cr            0x48228204
xer           0x20000000
ctr             0x292f78        openpic_splx
iar             0x63c344        db_enter+0x24
msr               0x9032        tlbdsmsize+0x8f4a
dar                    0
dsisr                  0
db_enter+0x24:  lwz r11,12(r1)

ddb{0}> ps
   PID     TID   PPID    UID  S       FLAGS  WAIT          COMMAND
 89786  339124  18956     21  7         0x2                c++
 18956  132327  16031     21  3    0x10008a  sigsusp       sh
 69984  204913  18196     21  2         0x2                c++
 18196   68139  16031     21  3    0x10008a  sigsusp       sh
 16031  461704  55284     21  3    0x10008a  sigsusp       make
 55284  387860  26131     21  3    0x10008a  sigsusp       sh
 26131  129701   8638     21  3    0x10008a  sigsusp       make
  8638    5723  93131     21  3    0x10008a  sigsusp       sh
 93131  150437  70656     21  3    0x10008a  sigsusp       make
 70656  356318  77649     21  3    0x10008a  sigsusp       sh
 77649  417086  69384     21  3    0x10008a  sigsusp       make
 69384  106821  41029     21  3    0x10008a  sigsusp       sh
 41029   33801  47303     21  3    0x10008a  sigsusp       make
 47303  456448  54946      0  3    0x10008a  sigsusp       sh
 54946   79169  65610      0  3    0x10008a  sigsusp       make
 65610  197678   3781      0  3    0x10008a  sigsusp       make
  3781   34391  24626      0  3    0x10008a  sigsusp       sh
 24626   44883  83499      0  3        0x82  piperd        perl
 83499  489078  31556      0  3    0x10008a  sigsusp       ksh
 31556  300547  31500      0  3        0x9a  kqread        sshd
 30342  257360      1      0  3    0x100083  ttyin         getty
 22119   70750      1      0  3    0x100098  kqread        cron
 18055  372758      1     99  3   0x1100090  kqread        sndiod
 15008  447360      1    110  3    0x100090  kqread        sndiod
 13426   88175  71372     95  3   0x1100092  kqread        smtpd
 69885  195544  71372    103  3   0x1100092  kqread        smtpd
 21127  121140  71372     95  3   0x1100092  kqread        smtpd
 45089  378581  71372     95  3    0x100092  kqread        smtpd
 25644   44788  71372     95  3   0x1100092  kqread        smtpd
 91476  174006  71372     95  3   0x1100092  kqread        smtpd
 71372  398158      1      0  3    0x100080  kqread        smtpd
 42333  286401      1      0  3    0x100080  kqread        snmpd
 96410  279792      1     91  3   0x1000092  kqread        snmpd
 31500  218012      1      0  3        0x88  kqread        sshd
 93289  359805      0      0  3     0x14280  nfsidl        nfsio
 97871  419910      0      0  3     0x14280  nfsidl        nfsio
 42572  230238      0      0  3     0x14280  nfsidl        nfsio
 76808  507862      0      0  3     0x14280  nfsidl        nfsio
 71633  434281      1      0  3    0x100080  kqread        ntpd
 91354   47535  29153     83  3    0x100092  kqread        ntpd
 29153  124045      1     83  3   0x1100092  kqread        ntpd
 79695   44418  51744     74  3   0x1100092  bpf           pflogd
 51744  381692      1      0  3        0x80  netio         pflogd
 55907  151738  60426     73  3   0x1100090  kqread        syslogd
 60426   76092      1      0  3    0x100082  netio         syslogd
 88148  388608      1      0  3    0x100080  kqread        resolvd
 27342  343514  35925     77  3    0x100092  kqread        dhcpleased
 91544  385441  35925     77  3    0x100092  kqread        dhcpleased
 35925  410197      1      0  3        0x80  kqread        dhcpleased
 69974  505453  29200    115  3    0x100092  kqread        slaacd
 21402  354493  29200    115  3    0x100092  kqread        slaacd
 29200  404409      1      0  3    0x100080  kqread        slaacd
 75650  317973      0      0  3     0x14200  bored         smr
 13921   79526      0      0  3  0x40014200                idle1
 89472  223474      0      0  2     0x14200                zerothread
 29989  442095      0      0  3     0x14200  aiodoned      aiodoned
 80478  197690      0      0  3     0x14200  syncer        update
 93421  417382      0      0  3     0x14200  cleaner       cleaner
   690  224430      0      0  3     0x14200  reaper        reaper
*93511  246215      0      0  7     0x14200                pagedaemon
  4197  277498      0      0  3     0x14200  usbtsk        usbtask
 36475  273892      0      0  3     0x14200  usbatsk       usbatsk
 13924   79914      0      0  3     0x14200  bored         sensors
 36337   12438      0      0  3     0x14200  bored         softnet
 76457  523170      0      0  3     0x14200  bored         systqmp
  1779   97134      0      0  2     0x14200                systq
 49928  343720      0      0  3  0x40014200  bored         softclock
 26289  252465      0      0  3  0x40014200                idle0
     1  472436      0      0  3        0x82  wait          init
     0       0     -1      0  3     0x10200  scheduler     swapper

ddb{0}> show uvm
Current UVM status:
  pagesize=4096 (0x1000), pagemask=0xfff, pageshift=12
  500885 VM pages: 175986 active, 176218 inactive, 1 wired, 39146 free (0 zero)
  min  10% (25) anon, 10% (25) vnode, 5% (12) vtext
  freemin=16696, free-target=22261, inactive-target=124876, wired-max=166961
  faults=969630414, traps=0, intrs=1166825, ctxswitch=14711382 fpuswitch=3180378
  softint=8108901, syscalls=1386436019, kmapent=10
  fault counts:
    noram=0, noanon=0, noamap=0, pgwait=0, pgrele=0
    ok relocks(total)=627050(629900), anget(retries)=781626468(0), 
amapcopy=60288578
    neighbor anon/obj pg=68697850/141880231, gets(lock/unlock)=49379029/630810
    cases: anon=779885897, anoncow=1740571, obj=42638621, prcopy=6736648, 
przero=138628677
  daemon and swap counts:
    woke=5, revs=1, scans=22691, obscans=22425, anscans=0
    busy=0, freed=22424, reactivate=266, deactivate=0
    pageouts=1, pending=0, nswget=0
    nswapdev=1
    swpages=589823, swpginuse=0, swpgonly=0 paging=0
  kernel pointers:
    objs(kern)=0xae6070

Reply via email to