syzbot


panic: WARNING: circular locking detected: kernel.fsContextMutex -> kernfs.filesystemRWMutex: (2)

Status: fixed on 2025/09/23 10:34
Fix commit: aba998b90aff kernel: Defer DecRef in SetWorkingDirectory to break lock cycle
First crash: 25d, last: 23d
Similar bugs (1)
Kernel Title Rank 🛈 Repro Cause bisect Fix bisect Count Last Reported Patched Status
gvisor panic: WARNING: circular locking detected: kernel.fsContextMutex -> kernfs.filesystemRWMutex: 2 C 10461 29d 34d 26/26 fixed on 2025/09/17 13:21

Sample crash report:
panic: WARNING: circular locking detected: kernel.fsContextMutex -> kernfs.filesystemRWMutex:
	goroutine 736 [running]:
	gvisor.dev/gvisor/pkg/sync/locking.(*ancestorsAtomicPtrMap).RangeRepeatable(0xc0001ed7c0, 0xc000d57138)
		bazel-out/k8-fastbuild/bin/pkg/sync/locking/atomicptrmap_ancestors_unsafe.go:440 +0x314
	gvisor.dev/gvisor/pkg/sync/locking.checkLock(0xc000334cf0, 0xc0001ed7a0, {0x0, 0x0, 0x0})
		pkg/sync/locking/lockdep.go:112 +0x4eb
	gvisor.dev/gvisor/pkg/sync/locking.AddGLock(0xc000334cf0, 0xffffffffffffffff)
		pkg/sync/locking/lockdep.go:144 +0x37b
	gvisor.dev/gvisor/pkg/sentry/fsimpl/kernfs.(*filesystemRWMutex).Lock(0xc0006c5550)
		bazel-out/k8-fastbuild/bin/pkg/sentry/fsimpl/kernfs/filesystem_mutex.go:31 +0x4d
	gvisor.dev/gvisor/pkg/sentry/fsimpl/kernfs.(*Dentry).DecRef(0xc000b97170, {0x21bc6b0, 0xc0019eb908})
		pkg/sentry/fsimpl/kernfs/kernfs.go:303 +0x116
	gvisor.dev/gvisor/pkg/sentry/vfs.(*Dentry).DecRef(0xc000b97170, {0x21bc6b0, 0xc0019eb908})
		pkg/sentry/vfs/dentry.go:156 +0x68
	gvisor.dev/gvisor/pkg/sentry/vfs.VirtualDentry.DecRef({0xc0002a11e0?, 0xc000b97170?}, {0x21bc6b0, 0xc0019eb908})
		pkg/sentry/vfs/vfs.go:1114 +0x5b
	gvisor.dev/gvisor/pkg/sentry/kernel.(*FSContext).SetWorkingDirectory(0xc00077a740, {0x21bc6b0, 0xc0019eb908}, {0xc0002a11e0, 0xc000d83d40})
		pkg/sentry/kernel/fs_context.go:144 +0x23b
	gvisor.dev/gvisor/pkg/sentry/syscalls/linux.Fchdir(0xc0019eb908, 0x457b27?, {{0x3}, {0x0}, {0x0}, {0x0}, {0x0}, {0x0}})
		pkg/sentry/syscalls/linux/sys_file.go:361 +0x3b8
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).executeSyscall(0xc0019eb908, 0x51, {{0x3}, {0x0}, {0x0}, {0x0}, {0x0}, {0x0}})
		pkg/sentry/kernel/task_syscall.go:143 +0xb90
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallInvoke(0xc0019eb908, 0x51, {{0x3}, {0x0}, {0x0}, {0x0}, {0x0}, {0x0}})
		pkg/sentry/kernel/task_syscall.go:323 +0x85
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallEnter(0xc0019eb908, 0x51, {{0x3}, {0x0}, {0x0}, {0x0}, {0x0}, {0x0}})
		pkg/sentry/kernel/task_syscall.go:283 +0xc7
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscall(0xc0019eb908)
		pkg/sentry/kernel/task_syscall.go:258 +0x53e
	gvisor.dev/gvisor/pkg/sentry/kernel.(*runApp).execute(0xc0019eb908?, 0xc0019eb908)
		pkg/sentry/kernel/task_run.go:269 +0x220c
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).run(0xc0019eb908, 0x4e)
		pkg/sentry/kernel/task_run.go:97 +0x402
	created by gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).Start in goroutine 703
		pkg/sentry/kernel/task_start.go:416 +0x17e
	
	known lock chain: kernfs.filesystemRWMutex -> kernel.taskMutex -> kernel.fsContextMutex
	
	====== kernfs.filesystemRWMutex -> kernel.taskMutex =====
	goroutine 233 [running]:
	gvisor.dev/gvisor/pkg/sentry/kernel.(*taskMutex).Lock(0xc0008fa9a0)
		bazel-out/k8-fastbuild/bin/pkg/sentry/kernel/task_mutex.go:35 +0x4d
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).GetNetworkNamespace(0xc0008fa008)
		pkg/sentry/kernel/task_net.go:48 +0x4d
	gvisor.dev/gvisor/pkg/sentry/fsimpl/proc.(*filesystem).newTaskNetDir(0xc0001e26c0, {0x21bc6b0, 0xc0008fa008}, 0xc0008fa008)
		pkg/sentry/fsimpl/proc/task_net.go:47 +0x132
	gvisor.dev/gvisor/pkg/sentry/fsimpl/proc.(*filesystem).newTaskInode(0xc0001e26c0, {0x21bc6b0, 0xc0008fa008}, 0xc0008fa008, 0xc0001c4a80, 0x1, 0x0)
		pkg/sentry/fsimpl/proc/task.go:77 +0x12d3
	gvisor.dev/gvisor/pkg/sentry/fsimpl/proc.(*tasksInode).Lookup(0xc0003c1008, {0x21bc6b0, 0xc0008fa008}, {0x1fa44d4, 0x1})
		pkg/sentry/fsimpl/proc/tasks.go:147 +0x3c6
	gvisor.dev/gvisor/pkg/sentry/fsimpl/kernfs.(*Filesystem).revalidateChildLocked(0xc0001e26c0, {0x21bc6b0, 0xc0008fa008}, 0xc0000049e0, 0xc0009b6b40, {0x1fa44d4, 0x1})
		pkg/sentry/fsimpl/kernfs/filesystem.go:127 +0x3eb
	gvisor.dev/gvisor/pkg/sentry/fsimpl/kernfs.(*Filesystem).stepExistingLocked(0xc0001e26c0, {0x21bc6b0, 0xc0008fa008}, 0xc0004c6488, 0xc0009b6b40)
		pkg/sentry/fsimpl/kernfs/filesystem.go:74 +0x459
	gvisor.dev/gvisor/pkg/sentry/fsimpl/kernfs.(*Filesystem).walkExistingLocked(0xc0001e26c0, {0x21bc6b0, 0xc0008fa008}, 0xc0004c6488)
		pkg/sentry/fsimpl/kernfs/filesystem.go:197 +0x106
	gvisor.dev/gvisor/pkg/sentry/fsimpl/kernfs.(*Filesystem).ReadlinkAt(0xc0001e26c0, {0x21bc6b0, 0xc0008fa008}, 0xc0004c6488)
		pkg/sentry/fsimpl/kernfs/filesystem.go:697 +0x14a
	gvisor.dev/gvisor/pkg/sentry/vfs.(*VirtualFilesystem).ReadlinkAt(0xc0000049e0, {0x21bc6b0, 0xc0008fa008}, 0xc0002102a0, 0xc000047598)
		pkg/sentry/vfs/vfs.go:512 +0x109
	gvisor.dev/gvisor/pkg/sentry/syscalls/linux.readlinkat(0xc0008fa008, 0xffffff9c, 0xc0000c0070, 0xc0000b6d80, 0x80)
		pkg/sentry/syscalls/linux/sys_file.go:1096 +0x305
	gvisor.dev/gvisor/pkg/sentry/syscalls/linux.Readlinkat(0xc0008fa008, 0x457b27?, {{0xffffffffffffff9c}, {0xc0000c0070}, {0xc0000b6d80}, {0x80}, {0x0}, {0x0}})
		pkg/sentry/syscalls/linux/sys_file.go:1067 +0xc6
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).executeSyscall(0xc0008fa008, 0x10b, {{0xffffffffffffff9c}, {0xc0000c0070}, {0xc0000b6d80}, {0x80}, {0x0}, {0x0}})
		pkg/sentry/kernel/task_syscall.go:143 +0xb90
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallInvoke(0xc0008fa008, 0x10b, {{0xffffffffffffff9c}, {0xc0000c0070}, {0xc0000b6d80}, {0x80}, {0x0}, {0x0}})
		pkg/sentry/kernel/task_syscall.go:323 +0x85
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallEnter(0xc0008fa008, 0x10b, {{0xffffffffffffff9c}, {0xc0000c0070}, {0xc0000b6d80}, {0x80}, {0x0}, {0x0}})
		pkg/sentry/kernel/task_syscall.go:283 +0xc7
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscall(0xc0008fa008)
		pkg/sentry/kernel/task_syscall.go:258 +0x53e
	gvisor.dev/gvisor/pkg/sentry/kernel.(*runApp).execute(0xc0008fa008?, 0xc0008fa008)
		pkg/sentry/kernel/task_run.go:269 +0x220c
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).run(0xc0008fa008, 0x1)
		pkg/sentry/kernel/task_run.go:97 +0x402
	created by gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).Start in goroutine 1
		pkg/sentry/kernel/task_start.go:416 +0x17e
	
	====== kernel.taskMutex -> kernel.fsContextMutex =====
	goroutine 340 [running]:
	gvisor.dev/gvisor/pkg/sentry/kernel.(*fsContextMutex).Lock(0xc0009bf508)
		bazel-out/k8-fastbuild/bin/pkg/sentry/kernel/fs_context_mutex.go:33 +0x4d
	gvisor.dev/gvisor/pkg/sentry/kernel.(*FSContext).Fork(0xc0009bf500)
		pkg/sentry/kernel/fs_context.go:97 +0x65
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).Unshare(0xc0009fe588, 0x20000)
		pkg/sentry/kernel/task_clone.go:706 +0x1207
	gvisor.dev/gvisor/pkg/sentry/syscalls/linux.Unshare(0xc0009fe588, 0x457b27?, {{0x20000}, {0x7}, {0x7fa5380eeaf0}, {0x0}, {0x0}, {0x55e12b96f6c0}})
		pkg/sentry/syscalls/linux/sys_thread.go:453 +0xd5
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).executeSyscall(0xc0009fe588, 0x110, {{0x20000}, {0x7}, {0x7fa5380eeaf0}, {0x0}, {0x0}, {0x55e12b96f6c0}})
		pkg/sentry/kernel/task_syscall.go:143 +0xb90
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallInvoke(0xc0009fe588, 0x110, {{0x20000}, {0x7}, {0x7fa5380eeaf0}, {0x0}, {0x0}, {0x55e12b96f6c0}})
		pkg/sentry/kernel/task_syscall.go:323 +0x85
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallEnter(0xc0009fe588, 0x110, {{0x20000}, {0x7}, {0x7fa5380eeaf0}, {0x0}, {0x0}, {0x55e12b96f6c0}})
		pkg/sentry/kernel/task_syscall.go:283 +0xc7
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscall(0xc0009fe588)
		pkg/sentry/kernel/task_syscall.go:258 +0x53e
	gvisor.dev/gvisor/pkg/sentry/kernel.(*runApp).execute(0xc0009fe588?, 0xc0009fe588)
		pkg/sentry/kernel/task_run.go:269 +0x220c
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).run(0xc0009fe588, 0x19)
		pkg/sentry/kernel/task_run.go:97 +0x402
	created by gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).Start in goroutine 257
		pkg/sentry/kernel/task_start.go:416 +0x17e
	

Crashes (15):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2025/09/22 18:00 gvisor 6448dbe1b799 770ff59f .config console log report syz / log C ci-gvisor-ptrace-1-race-cover panic: WARNING: circular locking detected: kernel.fsContextMutex -> kernfs.filesystemRWMutex:
2025/09/20 21:03 gvisor 6448dbe1b799 67c37560 .config console log report syz / log C ci-gvisor-ptrace-2-race-cover panic: WARNING: circular locking detected: kernel.fsContextMutex -> kernfs.filesystemRWMutex:
2025/09/20 21:00 gvisor 6448dbe1b799 67c37560 .config console log report syz / log C ci-gvisor-ptrace-3-race-cover panic: WARNING: circular locking detected: kernel.fsContextMutex -> kernfs.filesystemRWMutex:
2025/09/20 20:54 gvisor 6448dbe1b799 67c37560 .config console log report syz / log C ci-gvisor-systrap-1-race-cover panic: WARNING: circular locking detected: kernel.fsContextMutex -> kernfs.filesystemRWMutex:
2025/09/20 20:51 gvisor 6448dbe1b799 67c37560 .config console log report syz / log C ci-gvisor-ptrace-2-race panic: WARNING: circular locking detected: kernel.fsContextMutex -> kernfs.filesystemRWMutex:
2025/09/20 20:51 gvisor 6448dbe1b799 67c37560 .config console log report syz / log C ci-gvisor-systrap-1-race panic: WARNING: circular locking detected: kernel.fsContextMutex -> kernfs.filesystemRWMutex:
2025/09/20 20:50 gvisor 6448dbe1b799 67c37560 .config console log report syz / log C ci-gvisor-ptrace-3-race panic: WARNING: circular locking detected: kernel.fsContextMutex -> kernfs.filesystemRWMutex:
2025/09/20 20:24 gvisor 6448dbe1b799 67c37560 .config console log report syz / log C ci-gvisor-ptrace-1-race panic: WARNING: circular locking detected: kernel.fsContextMutex -> kernfs.filesystemRWMutex:
2025/09/21 00:02 gvisor 6448dbe1b799 67c37560 .config console log report syz / log C ci-gvisor-arm64-systrap-1-race-cover panic: WARNING: circular locking detected: kernel.fsContextMutex -> kernfs.filesystemRWMutex:
2025/09/20 22:25 gvisor 6448dbe1b799 67c37560 .config console log report syz / log C ci-gvisor-arm64-ptrace-1-race-cover panic: WARNING: circular locking detected: kernel.fsContextMutex -> kernfs.filesystemRWMutex:
2025/09/20 21:26 gvisor 6448dbe1b799 67c37560 .config console log report syz / log C ci-gvisor-arm64-ptrace-1-race panic: WARNING: circular locking detected: kernel.fsContextMutex -> kernfs.filesystemRWMutex:
2025/09/23 02:02 gvisor efacb45c502a 0ac7291c .config console log report info ci-gvisor-ptrace-2-race panic: WARNING: circular locking detected: kernel.fsContextMutex -> kernfs.filesystemRWMutex:
2025/09/23 00:43 gvisor efacb45c502a 0ac7291c .config console log report info ci-gvisor-ptrace-3-race-cover panic: WARNING: circular locking detected: kernel.fsContextMutex -> kernfs.filesystemRWMutex:
2025/09/22 18:02 gvisor 6448dbe1b799 770ff59f .config console log report info ci-gvisor-ptrace-1-race panic: WARNING: circular locking detected: kernel.fsContextMutex -> kernfs.filesystemRWMutex:
2025/09/20 20:05 gvisor 6448dbe1b799 67c37560 .config console log report info ci-gvisor-ptrace-1-race panic: WARNING: circular locking detected: kernel.fsContextMutex -> kernfs.filesystemRWMutex:
* Struck through repros no longer work on HEAD.