On 28/03/22(Mon) 13:35, Alexander Bluhm wrote: > Hi, > > There was a discussion about file system bugs with macppc. My dual > core macppc never completed a make release. I get various panics. > One of them is below. > > bluhm > > panic: vref used where vget required > Stopped at db_enter+0x24: lwz r11,12(r1) > TID PID UID PRFLAGS PFLAGS CPU COMMAND > 192060 78628 21 0x2 0 0 c++ > *132472 74971 0 0x14000 0x200 1K pagedaemon > db_enter() at db_enter+0x20 > panic(91373c) at panic+0x158 > vref(23b8fa20) at vref+0xac > uvm_vnp_uncache(e7eb7c50) at uvm_vnp_uncache+0x88 > ffs_write(7ed2e423) at ffs_write+0x3b0 > VOP_WRITE(23b8fa20,e7eb7c50,40,1ff3f60) at VOP_WRITE+0x48 > uvn_io(7ed2e423,a93d0c,a93814,ffffffff,e4010000) at uvn_io+0x264 > uvn_put(414b673a,e7eb7dd4,24f00070,5326e90) at uvn_put+0x64 > uvm_pager_put(0,0,e7eb7d70,6ee0b8,2000000,80000000,0) at uvm_pager_put+0x15c > uvmpd_scan_inactive(0) at uvmpd_scan_inactive+0x224 > uvmpd_scan() at uvmpd_scan+0x158 > uvm_pageout(7e932633) at uvm_pageout+0x398
The page daemon is trying to write a page on the inactive list back to the disk. Sadly it seems the vnode has already been recycled, which indicate the page should already be on the disk. That suggests uvm_pagefree() hasn't been called for this page. So how can this page be on the list if the vnode has been closed? A race between mmap/fault handler/close? A page leak? Something else?