Created attachment 205420 [details]
Repeatably able to panic kernel while building www/node ports while using nullfs and unionfs layered mounts for /usr/ports directory.
To trigger, setup mounts as:
/export/ports on /usr/ports (nullfs, local, read-only)
<above>:/usr/src/local.ports on /usr/ports (unionfs, local)
The /export/ports directory contains a master copy of the ports tree (ufs or zfs doesn't matter - haven't tried nfs).
Then build www/node port:
root@krash:~ # cd /usr/ports/www/node
root@krash:/usr/ports/www/node # make
===> Building for node-12.4.0
Wait for panic (may take awhile into build). After panic/reboot, restarting build panics again, almost immediately.
I was able to recreate crash in a fresh virtualbox install. The .vdi file for that VM (in a quick to re-panic state) is available upon request (7.3GB uncompressed).
/var/crash/core.txt file attached. vmcore file available (12MB compressed, unattached due to size).
Replaced nullfs with symlink and still panics. Removing nullfs
Replaced nullfs with symlink and still panics. Removed nullfs reference from summary line and adding core.txt.5 attachment.
Created attachment 205426 [details]
The panic and any associated backtrace will be of more use than the core file.
A commit in branch main references this bug:
Author: Jason A. Harmening <jah@FreeBSD.org>
AuthorDate: 2021-06-12 19:45:18 +0000
Commit: Jason A. Harmening <jah@FreeBSD.org>
CommitDate: 2021-06-29 13:02:01 +0000
unionfs: release parent vnodes in deferred context
Each unionfs node holds a reference to its parent directory vnode.
A single open file reference can therefore end up keeping an
arbitrarily deep vnode hierarchy in place. When that reference is
released, the resulting VOP_RECLAIM call chain can then exhaust the
This is easily reproducible by running the unionfs.sh stress2 test.
Fix it by deferring recursive unionfs vnode release to taskqueue
Reviewed By: kib (earlier version), markj
Differential Revision: https://reviews.freebsd.org/D30748
sys/fs/unionfs/union.h | 6 ++++-
sys/fs/unionfs/union_subr.c | 55 ++++++++++++++++++++++++++++++++++++++++-----
2 files changed, 55 insertions(+), 6 deletions(-)
Is this issue now resolved (modulo any MFCs)?