syzbot


panic: WARNING: circular locking detected: stack.packetEndpointListRWMutex -> kernel.taskSetRWMutex: (2)

Status: fixed on 2023/06/26 09:18
Fix commit: fedbf08401fe kernel: unshare a network namespace without taking Task.mu
First crash: 525d, last: 525d
Similar bugs (1)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
gvisor panic: WARNING: circular locking detected: stack.packetEndpointListRWMutex -> kernel.taskSetRWMutex: C 3 539d 539d 26/26 fixed on 2023/06/09 02:12

Sample crash report:
panic: WARNING: circular locking detected: stack.packetEndpointListRWMutex -> kernel.taskSetRWMutex:
goroutine 252 [running]:
gvisor.dev/gvisor/pkg/sync/locking.(*ancestorsAtomicPtrMap).RangeRepeatable(0xc000330140, 0xc00049e328)
	bazel-out/k8-fastbuild-ST-3dcbe13c9b87/bin/pkg/sync/locking/atomicptrmap_ancestors_unsafe.go:440 +0x1dc
gvisor.dev/gvisor/pkg/sync/locking.checkLock(0xc000330b40, 0xc000330120, {0xc0001cc1a8, 0x1, 0x1})
	pkg/sync/locking/lockdep.go:112 +0x48d
gvisor.dev/gvisor/pkg/sync/locking.checkLock.func1(0xc000241e10?, 0xc00049e450?)
	pkg/sync/locking/lockdep.go:115 +0x65
gvisor.dev/gvisor/pkg/sync/locking.(*ancestorsAtomicPtrMap).RangeRepeatable(0xc000241df0, 0xc00049e560)
	bazel-out/k8-fastbuild-ST-3dcbe13c9b87/bin/pkg/sync/locking/atomicptrmap_ancestors_unsafe.go:440 +0x1dc
gvisor.dev/gvisor/pkg/sync/locking.checkLock(0xc000330b40, 0xc000241dd0, {0x0, 0x0, 0x0})
	pkg/sync/locking/lockdep.go:112 +0x48d
gvisor.dev/gvisor/pkg/sync/locking.AddGLock(0xc000330b40, 0xffffffffffffffff)
	pkg/sync/locking/lockdep.go:144 +0x2dc
gvisor.dev/gvisor/pkg/sentry/kernel.(*taskSetRWMutex).RLock(0xc000461340)
	bazel-out/k8-fastbuild-ST-3dcbe13c9b87/bin/pkg/sentry/kernel/taskset_mutex.go:59 +0x45
gvisor.dev/gvisor/pkg/sentry/kernel.(*ThreadGroup).Leader(0xc000642800)
	pkg/sentry/kernel/threads.go:403 +0x6b
gvisor.dev/gvisor/pkg/sentry/kernel/fasync.(*FileAsync).NotifyEvent(0xc0005b6310, 0x41)
	pkg/sentry/kernel/fasync/fasync.go:106 +0x1c5
gvisor.dev/gvisor/pkg/waiter.(*Queue).Notify(0xc0008deab0, 0x41)
	pkg/waiter/waiter.go:238 +0xae
gvisor.dev/gvisor/pkg/tcpip/transport/packet.(*endpoint).HandlePacket(0xc00045c8c0, 0x1, 0x86dd, 0xc00021c3c0)
	pkg/tcpip/transport/packet/endpoint.go:473 +0x6af
gvisor.dev/gvisor/pkg/tcpip/stack.(*nic).DeliverLinkPacket.func2({0x829bc0, 0xc00045c8c0})
	pkg/tcpip/stack/nic.go:772 +0x31e
gvisor.dev/gvisor/pkg/tcpip/stack.(*packetEndpointList).forEach(0xc0008deb70, 0xc00049f7d0)
	pkg/tcpip/stack/nic.go:130 +0x122
gvisor.dev/gvisor/pkg/tcpip/stack.(*nic).DeliverLinkPacket(0xc0008be000, 0x86dd, 0xc00021c000)
	pkg/tcpip/stack/nic.go:787 +0x236
gvisor.dev/gvisor/pkg/tcpip/link/nested.(*Endpoint).DeliverLinkPacket(0xc000210960, 0x1aa33a5?, 0x0?)
	pkg/tcpip/link/nested/nested.go:69 +0x99
gvisor.dev/gvisor/pkg/tcpip/link/packetsocket.(*endpoint).WritePackets(0xc000210960, {{0xc0001cc158, 0x1, 0x1}})
	pkg/tcpip/link/packetsocket/packetsocket.go:52 +0x9f
gvisor.dev/gvisor/pkg/tcpip/stack.(*delegatingQueueingDiscipline).WritePacket(0xc000647080, 0x132c105?)
	pkg/tcpip/stack/nic.go:146 +0x98
gvisor.dev/gvisor/pkg/tcpip/stack.(*nic).writeRawPacket(0xc0008be000, 0xc00021c000)
	pkg/tcpip/stack/nic.go:392 +0x85
gvisor.dev/gvisor/pkg/tcpip/stack.(*nic).writePacket(0xc0008be000, 0x100000000000000?)
	pkg/tcpip/stack/nic.go:386 +0x5a
gvisor.dev/gvisor/pkg/tcpip/stack.(*nic).WritePacket(0xc0008be000, 0xc00000ffca?, 0xc00021c000)
	pkg/tcpip/stack/nic.go:347 +0x206
gvisor.dev/gvisor/pkg/tcpip/network/ipv6.(*endpoint).writePacket(0xc000914000, 0xc0002b0900, 0xc00021c000, 0x4e8db5?, 0x0)
	pkg/tcpip/network/ipv6/ipv6.go:878 +0x409
gvisor.dev/gvisor/pkg/tcpip/network/ipv6.(*endpoint).WritePacket(0xc000914000, 0xc0002b0900, {0x86dd?, 0x0?, 0x0?}, 0x0?)
	pkg/tcpip/network/ipv6/ipv6.go:829 +0x46d
gvisor.dev/gvisor/pkg/tcpip/stack.(*Route).WritePacket(0xc0002b0900, {0x3e?, 0x0?, 0x0?}, 0xc000328020?)
	pkg/tcpip/stack/route.go:495 +0xf9
gvisor.dev/gvisor/pkg/tcpip/transport/internal/network.(*WriteContext).WritePacket(0xc0004a0380, 0xc00021c000, 0x0)
	pkg/tcpip/transport/internal/network/endpoint.go:320 +0x1ed
gvisor.dev/gvisor/pkg/tcpip/transport/udp.(*endpoint).write(0xc000376e00, {0x835408, 0xc0009c22d0}, {0x0, 0x0, 0x0, 0x0, {0x0, 0x0, 0x0, ...}})
	pkg/tcpip/transport/udp/endpoint.go:529 +0x8eb
gvisor.dev/gvisor/pkg/tcpip/transport/udp.(*endpoint).Write(0xc000376e00, {0x835408, 0xc0009c22d0}, {0x0, 0x0, 0x0, 0x0, {0x0, 0x0, 0x0, ...}})
	pkg/tcpip/transport/udp/endpoint.go:366 +0x87
gvisor.dev/gvisor/pkg/sentry/socket/netstack.(*sock).Write(0xc0009d43c0, {0x846360?, 0xc0009d7500}, {{0x83fcf0, 0xc000540000}, {0x0, 0x1, 0x0, 0x0}, {0x0, ...}}, ...)
	pkg/sentry/socket/netstack/netstack.go:482 +0x203
gvisor.dev/gvisor/pkg/sentry/vfs.(*FileDescription).Write(0xc0009d43c0, {0x846360, 0xc0009d7500}, {{0x83fcf0, 0xc000540000}, {0x0, 0x1, 0x0, 0x0}, {0x0, ...}}, ...)
	pkg/sentry/vfs/file_description.go:679 +0x125
gvisor.dev/gvisor/pkg/sentry/syscalls/linux.write(0x0?, 0xc0009d43c0, {{0x83fcf0, 0xc000540000}, {0x0, 0x1, 0x0, 0x0}, {0x0, 0x1}}, ...)
	pkg/sentry/syscalls/linux/sys_read_write.go:347 +0x9d
gvisor.dev/gvisor/pkg/sentry/syscalls/linux.Write(0xc0009d7500, 0x3?, {{0x6}, {0x0}, {0x0}, {0x556e6ebd9e40}, {0x556e6ebd9e40}, {0x556e6ebd9e40}})
	pkg/sentry/syscalls/linux/sys_read_write.go:316 +0x275
gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).executeSyscall(0xc0009d7500, 0x1, {{0x6}, {0x0}, {0x0}, {0x556e6ebd9e40}, {0x556e6ebd9e40}, {0x556e6ebd9e40}})
	pkg/sentry/kernel/task_syscall.go:142 +0x9c2
gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallInvoke(0xc0009d7500, 0x133a57a?, {{0x6}, {0x0}, {0x0}, {0x556e6ebd9e40}, {0x556e6ebd9e40}, {0x556e6ebd9e40}})
	pkg/sentry/kernel/task_syscall.go:322 +0x7d
gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallEnter(0x0?, 0x0?, {{0x6}, {0x0}, {0x0}, {0x556e6ebd9e40}, {0x556e6ebd9e40}, {0x556e6ebd9e40}})
	pkg/sentry/kernel/task_syscall.go:282 +0x8f
gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscall(0xc0009d7500)
	pkg/sentry/kernel/task_syscall.go:257 +0x4c5
gvisor.dev/gvisor/pkg/sentry/kernel.(*runApp).execute(0xc0009d7500?, 0xc0009d7500)
	pkg/sentry/kernel/task_run.go:269 +0x1d4b
gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).run(0xc0009d7500, 0x8)
	pkg/sentry/kernel/task_run.go:98 +0x41b
created by gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).Start
	pkg/sentry/kernel/task_start.go:383 +0x1ad

Crashes (3):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2023/06/19 22:03 gvisor d31be26ed544 d521bc56 .config console log report syz C ci-gvisor-systrap-1-race panic: WARNING: circular locking detected: stack.packetEndpointListRWMutex -> kernel.taskSetRWMutex:
2023/06/19 21:55 gvisor d31be26ed544 d521bc56 .config console log report syz C ci-gvisor-ptrace-1-race panic: WARNING: circular locking detected: stack.packetEndpointListRWMutex -> kernel.taskSetRWMutex:
2023/06/19 21:39 gvisor d31be26ed544 d521bc56 .config console log report syz C ci-gvisor-ptrace-2-race panic: WARNING: circular locking detected: stack.packetEndpointListRWMutex -> kernel.taskSetRWMutex:
* Struck through repros no longer work on HEAD.