svn commit: r365787 - head/sys/fs/tmpfs

Konstantin Belousov kostikbel at gmail.com
Sat Jan 2 14:52:44 UTC 2021


On Sat, Jan 02, 2021 at 06:29:06AM +0000, Alexey Dokuchaev wrote:
> On Sat, Jan 02, 2021 at 12:02:23AM +0200, Konstantin Belousov wrote:
> > On Fri, Jan 01, 2021 at 06:44:00PM +0000, Alexey Dokuchaev wrote:
> > > On Tue, Sep 15, 2020 at 10:19:16PM +0000, Konstantin Belousov wrote:
> > > > New Revision: 365787
> > > > URL: https://svnweb.freebsd.org/changeset/base/365787
> > > > 
> > > > Log:
> > > >   Add tmpfs page cache read support.
> > > >   
> > > >   Or it could be explained as lockless (for vnode lock) reads.  Reads
> > > >   are performed from the node tn_obj object.  Tmpfs regular vnode object
> > > >   lifecycle is significantly different from the normal OBJT_VNODE: it is
> > > >   alive as far as ref_count > 0.
> > > 
> > > This causes panics for me when building ports in the tmpfs-backed tinderbox.
> > > Easily reproducible:
> > > 
> > > 1) ./tc tinderbuild ... -b "$@"
> > > 2) tail -f .../tmp/make.log4 # on the adjacent console
> > > 3) wait until the build job finishes
> > > 4) ^C in the "tail" window -> crash
> > 
> > What exactly 'crash' is?
> 
> The usual "Fatal trap 12: page fault while in kernel mode" panic.
And everything else ?  There is a lot of useful data there (for me at
least).

> 
> > Provide literal transcription of the kernel messages and not your
> > interpretation of them.
> 
> Sorry, I've just quickly copied function names off the screen since my
> debug symbols did not match the running kernel at that moment and I've
> thought maybe it's a known bug that was fixed after r368820.  I've now
> made things in sync so can provide full context (see below).
> 
> > >  ...
> > >   __mtx_lock_sleep() at __mtx_lock_sleep+0xd2/frame 0xfffffe0060636490
> > >   tmpfs_free_node() at tmpfs_free_node+0xc7/frame 0xfffffe00606364c0
> > 
> > What is the source line for tmpfs_free_node() frame?
> 
> /usr/src/crash-dec/sys/fs/tmpfs/tmpfs_subr.c:373
> 
> (kgdb) list *(tmpfs_free_node+0xc7)
> 0xffffffff815246d7 is in tmpfs_free_node (/usr/src/crash-dec/sys/fs/tmpfs/tmpfs_subr.c:374).
> 369     {
> 370             if (refcount_release_if_not_last(&node->tn_refcount))
> 371                     return;
> 372     
> 373             TMPFS_LOCK(tmp);
> 374             TMPFS_NODE_LOCK(node);
> 375             if (!tmpfs_free_node_locked(tmp, node, false)) {
> 376                     TMPFS_NODE_UNLOCK(node);
> 377                     TMPFS_UNLOCK(tmp);
> 378             }
> (kgdb)

Ok.  So two questions:
1. Do you have core dump?  If not, can you configure it and obtain the dump?
2. Can you look more closely what you do from the user PoV there, and provide
   a recipe to reproduce without involving 'tc tinderbiuild', whatever it is ?

In particular, I want to see the *node content.


More information about the svn-src-all mailing list