Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Panic: vrelel: bad ref count (9.99.54)



Dear Andrew,

On 2020-05-05, Andrew Doran wrote:
> On Mon, May 04, 2020 at 03:54:57PM +0200, Leonardo Taccari wrote:
> > Hello Yorick and Andrew,
> > 
> > Yorick Hardy writes:
> > > > > > [...]
> > > > > > 
> > > > > >   Crash version 9.99.55, image version 9.99.55.
> > > > > >   crash: _kvm_kvatop(0)
> > > > > >   Kernel compiled without options LOCKDEBUG.
> > > > > >   System panicked: vrelel: bad ref count
> > > > > >   Backtrace from time of crash is available.
> > > > > >   crash> bt
> > > > > >   _KERNEL_OPT_NAGR() at 0
> > > > > >   ?() at 7f7ff7ecf000
> > > > > >   sys_reboot() at sys_reboot
> > > > > >   vpanic() at vpanic+0x181
> > > > > >   vtryrele() at vtryrele
> > > > > >   vcache_dealloc() at vcache_dealloc
> > > > > >   uvm_unmap_detach() at uvm_unmap_detach+0x76
> > > > > >   uvm_unmap1() at uvm_unmap1+0x4e
> > > > > >   uvm_mremap() at uvm_mremap+0x36b
> > > > > >   sys_mremap() at sys_mremap+0x68
> > > > > >   syscall() at syscall+0x227
> > > > > >   --- syscall (number 411) ---
> > > > > >   797459842e9a:
> > > > > >   crash>
> > > > > 
> > > > > The same just happened on 9.99.56 while fetching (POP) mail using mail/fdm.
> > > > 
> > > > Could you file a PR please?  If this panics again could you please run the
> > > > "dmesg" command in crash and find out what it printed about the vnode?  That
> > > > would be very useful.
> > > > 
> > > > Thanks,
> > > > Andrew
> > >
> > > I will do so (... perhaps only this weekend).
> > > [...]
> > 
> > I was able to reproduce it too with a yesterday evening NetBSD/amd64
> > -current when using mail/fdm and I will try to prepare a minimal
> > reproducer using mail/fdm and file a PR if noone beat me.
> > 
> > In the meantime here the information from dmesg:
> > 
> > [ 6107.6380323] vnode 0xffffa95219747d40 flags 0x418<MAPPED,MPSAFE,WRMAP>
> > [ 6107.6380323]    tag VT_TMPFS(25) type VREG(1) mount 0xffffa951f6d89000 typedata 0xffffa95255e32c90
> > [ 6107.6380323]    usecount 1 writecount 1 holdcount 0
> > [ 6107.6380323]    size 18000 writesize 18000 numoutput 0
> > [ 6107.6380323]    data 0xffffa952583304a0 lock 0xffffa95219747f00
> > [ 6107.6380323]    state LOADED key(0xffffa951f6d89000 8) a0 04 33 58 52 a9 ff ff
> > [ 6107.6380323]    lrulisthd 0xffffffff816b5ed0
> > [ 6107.6380323]    tag VT_TMPFS, tmpfs_node 0xffffa952583304a0, flags 0x0, links 1
> > [ 6107.6380323]    mode 0600, owner 1000, group 0, size 98304
> > [ 6107.6380323] panic: vrelel: bad ref count
> > [ 6107.6380323] cpu0: Begin traceback...
> > [ 6107.6380323] vpanic() at netbsd:vpanic+0x178
> > [ 6107.6480364] vnpanic() at netbsd:vnpanic+0x49
> > [ 6107.6480364] vrelel() at netbsd:vrelel+0x5b6
> > [ 6107.6480364] uvm_unmap_detach() at netbsd:uvm_unmap_detach+0x8e
> > [ 6107.6480364] sys_munmap() at netbsd:sys_munmap+0x85
> > [ 6107.6480364] syscall() at netbsd:syscall+0x2a0
> > [ 6107.6480364] --- syscall (number 73) ---
> > [ 6107.6480364] 7c1e5d18414a:
> > [ 6107.6480364] cpu0: End traceback...
> > [ 6107.6480364] fatal breakpoint trap in supervisor mode
> > [ 6107.6480364] trap type 1 code 0 rip 0xffffffff802219fd cs 0x8 rflags 0x202 cr2 0x7f7ff7ee5000 ilevel 0 rsp 0xffffc100c227ae20
> > [ 6107.6480364] curlwp 0xffffa9521e1b1600 pid 20756.20756 lowest kstack 0xffffc100c22772c0
> > [ 6107.6480364] dumping to dev 0,1 (offset=276847, size=2062664):
> > [ 6107.6480364] dump
> > 
> > If any possible further information is needed do not hesitate to
> > contact me!
> > 
> > 
> > Thanks!
> 
> Thank you.  I opened PR 55237 to track so I don't forget.
> 
> Andrew

I am still trying to track this down, but I can only understand small
pieces of the code at the moment. While going through uvm_map_enter
in sys/uvm/uvm_map.c, it looks like there is an unhandled case (patch
below). Is this correct? It seems to happen quite often, but with or
without the patch the system seems equally (un)stable.

-- 
Kind regards,

Yorick Hardy

Index: uvm_map.c
===================================================================
RCS file: /cvsroot/src/sys/uvm/uvm_map.c,v
retrieving revision 1.385
diff -u -r1.385 uvm_map.c
--- uvm_map.c	9 Jul 2020 05:57:15 -0000	1.385
+++ uvm_map.c	19 Nov 2020 16:04:07 -0000
@@ -1477,6 +1477,13 @@
 				    amapwaitflag | AMAP_EXTEND_BACKWARDS))
 					goto nomerge;
 			}
+
+			/*
+			 * We could not extend either amap, just skip on.
+			 */
+			else {
+				goto nomerge;
+			}
 		} else {
 			/*
 			 * Pull the next entry's amap backwards to cover this


Home | Main Index | Thread Index | Old Index