syzbot


panic: WARNING: circular locking detected: kernel.taskMutex -> mm.mappingRWMutex:

Status: fixed on 2025/02/11 14:03
Fix commit: d949e7177c2f taskCopyContext should not require holding task.mu.
First crash: 55d, last: 12d

Sample crash report:
panic: WARNING: circular locking detected: kernel.taskMutex -> mm.mappingRWMutex:
	goroutine 1436 [running]:
	gvisor.dev/gvisor/pkg/sentry/mm.(*mappingRWMutex).RLock(0xc00161d05c)
		bazel-out/k8-fastbuild/bin/pkg/sentry/mm/mapping_mutex.go:59 +0x4d
	gvisor.dev/gvisor/pkg/sentry/mm.(*MemoryManager).withInternalMappings(0xc00161d008, {0x20c8360, 0xc0015a0588}, {0x414a25?, 0xc000f72c60?}, {0x5?, 0x5?, 0x9c?}, 0x0, 0xc00160efb0)
		pkg/sentry/mm/io.go:545 +0x145
	gvisor.dev/gvisor/pkg/sentry/mm.(*MemoryManager).CopyIn(0xc00161d008, {0x20c8360, 0xc0015a0588}, 0x400000001c80, {0xc0015a109c, 0x10, 0x90}, {0x75?, 0x52?})
		pkg/sentry/mm/io.go:178 +0x2e7
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).CopyInBytes(0xc0015a0588, 0x400000001c80, {0xc0015a109c, 0x10, 0x90})
		pkg/sentry/kernel/task_usermem.go:57 +0xae
	gvisor.dev/gvisor/pkg/sentry/kernel.makeIovec({0x20b5050, 0xc0015a0588}, 0xc0015a0588, 0x400000001c80, {0xc0015a109c, 0x10, 0x90})
		pkg/sentry/kernel/task_usermem.go:264 +0xa9
	gvisor.dev/gvisor/pkg/sentry/kernel.copyInIovecs({0x20b5050, 0xc0015a0588}, 0xc0015a0588, 0x400000001c80, 0x1)
		pkg/sentry/kernel/task_usermem.go:234 +0x366
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).CopyInIovecsAsSlice(0xc0015a0588, 0x400000001c80, 0x1)
		pkg/sentry/kernel/task_usermem.go:181 +0x5a
	gvisor.dev/gvisor/pkg/sentry/syscalls/linux.doProcessVMOpMaybeLocked(0xc0015a0588, {{0x20b50b0, 0xc0013e5ea0}, 0x400000001c80, 0x1, {0x20b50b0, 0xc0013e5ec0}, 0x400000001d80, 0x1})
		pkg/sentry/syscalls/linux/sys_process_vm.go:151 +0xa5
	gvisor.dev/gvisor/pkg/sentry/syscalls/linux.processVMOp.func1(0xc0014a89a0?)
		pkg/sentry/syscalls/linux/sys_process_vm.go:127 +0x153
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).WithMuLocked(0xc0014a8008, 0xc00160f590)
		pkg/sentry/kernel/task.go:809 +0x62
	gvisor.dev/gvisor/pkg/sentry/syscalls/linux.processVMOp(0xc0015a0588, {{0xf3}, {0x400000001c80}, {0x1}, {0x400000001d80}, {0x1}, {0x0}}, 0x1)
		pkg/sentry/syscalls/linux/sys_process_vm.go:122 +0x99a
	gvisor.dev/gvisor/pkg/sentry/syscalls/linux.ProcessVMWritev(0xc0015a0588, 0x0?, {{0xf3}, {0x400000001c80}, {0x1}, {0x400000001d80}, {0x1}, {0x0}})
		pkg/sentry/syscalls/linux/sys_process_vm.go:43 +0x6b
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).executeSyscall(0xc0015a0588, 0x137, {{0xf3}, {0x400000001c80}, {0x1}, {0x400000001d80}, {0x1}, {0x0}})
		pkg/sentry/kernel/task_syscall.go:143 +0xb9f
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallInvoke(0xc0015a0588, 0x137, {{0xf3}, {0x400000001c80}, {0x1}, {0x400000001d80}, {0x1}, {0x0}})
		pkg/sentry/kernel/task_syscall.go:323 +0x85
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallEnter(0xc0015a0588, 0x137, {{0xf3}, {0x400000001c80}, {0x1}, {0x400000001d80}, {0x1}, {0x0}})
		pkg/sentry/kernel/task_syscall.go:283 +0xc7
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscall(0xc0015a0588)
		pkg/sentry/kernel/task_syscall.go:258 +0x54a
	gvisor.dev/gvisor/pkg/sentry/kernel.(*runApp).execute(0xc0015a0588?, 0xc0015a0588)
		pkg/sentry/kernel/task_run.go:269 +0x2295
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).run(0xc0015a0588, 0xfc)
		pkg/sentry/kernel/task_run.go:97 +0x41b
	created by gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).Start in goroutine 1474
		pkg/sentry/kernel/task_start.go:412 +0x185
	
	known lock chain: mm.mappingRWMutex -> kernel.taskMutex
	
	====== mm.mappingRWMutex -> kernel.taskMutex =====
	goroutine 992 [running]:
	gvisor.dev/gvisor/pkg/sentry/kernel.(*taskMutex).Lock(0xc001569620)
		bazel-out/k8-fastbuild/bin/pkg/sentry/kernel/task_mutex.go:35 +0x4d
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).contextValue(0xc001568c88, {0x1c37080, 0x2099aa0}, 0x0)
		pkg/sentry/kernel/task_context.go:96 +0x127a
	gvisor.dev/gvisor/pkg/sentry/kernel.(*taskAsyncContext).Value(0xc0018aace0, {0x1c37080, 0x2099aa0})
		pkg/sentry/kernel/task_context.go:159 +0x65
	gvisor.dev/gvisor/pkg/sentry/vfs.RootFromContext({0x7f5d782be950, 0xc0018aace0})
		pkg/sentry/vfs/context.go:88 +0x58
	gvisor.dev/gvisor/pkg/sentry/vfs.(*FileDescription).MappedName(0xc0006fc680, {0x20c83f0, 0xc0018aace0})
		pkg/sentry/vfs/file_description.go:816 +0x78
	gvisor.dev/gvisor/pkg/sentry/mm.(*MemoryManager).appendVMAMapsEntryLocked(0xc001678078?, {0x20c83f0, 0xc0018aace0}, {0xc001623208?, 0x484d89?}, 0xc001810e50)
		pkg/sentry/mm/procfs.go:129 +0x329
	gvisor.dev/gvisor/pkg/sentry/mm.(*MemoryManager).ReadMapsDataInto(0xc001678008, {0x20c83f0, 0xc0018aace0}, 0xc001810e50)
		pkg/sentry/mm/procfs.go:85 +0x13f
	gvisor.dev/gvisor/pkg/sentry/fsimpl/proc.(*mapsData).Generate(0xc00188c708, {0x20c83f0, 0xc0018aace0}, 0xc0012ba3a0)
		pkg/sentry/fsimpl/proc/task_files.go:613 +0xad
	gvisor.dev/gvisor/pkg/sentry/vfs.(*DynamicBytesFileDescriptionImpl).preadLocked(0xc0012ba380, {0x20c83f0, 0xc0018aace0}, {{0x20bef78, 0xc001678008}, {0x0, 0x1, 0x0, 0x0}, {0x0, ...}}, ...)
		pkg/sentry/vfs/file_description_impl_util.go:310 +0x1df
	gvisor.dev/gvisor/pkg/sentry/vfs.(*DynamicBytesFileDescriptionImpl).PRead(0xc0012ba380, {0x20c83f0, 0xc0018aace0}, {{0x20bef78, 0xc001678008}, {0x0, 0x1, 0x0, 0x0}, {0x0, ...}}, ...)
		pkg/sentry/vfs/file_description_impl_util.go:329 +0xd8
	gvisor.dev/gvisor/pkg/sentry/fsimpl/kernfs.(*DynamicBytesFD).PRead(0xc0012ba380, {0x20c83f0, 0xc0018aace0}, {{0x20bef78, 0xc001678008}, {0x0, 0x1, 0x0, 0x0}, {0x0, ...}}, ...)
		pkg/sentry/fsimpl/kernfs/dynamic_bytes_file.go:133 +0xb7
	gvisor.dev/gvisor/pkg/sentry/vfs.(*FileDescription).PRead(0xc0012ba3e0, {0x20c83f0, 0xc0018aace0}, {{0x20bef78, 0xc001678008}, {0x0, 0x1, 0x0, 0x0}, {0x0, ...}}, ...)
		pkg/sentry/vfs/file_description.go:636 +0x1a2
	gvisor.dev/gvisor/pkg/sentry/syscalls/linux.getAIOCallback.func1({0x20c83f0, 0xc0018aace0})
		pkg/sentry/syscalls/linux/sys_aio.go:361 +0x3f7
	gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).QueueAIO.func1()
		pkg/sentry/kernel/aio.go:30 +0x62
	created by gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).QueueAIO in goroutine 988
		pkg/sentry/kernel/aio.go:29 +0x229
	

Crashes (16):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2025/02/08 23:08 gvisor 9c490f813d37 ef44b750 .config console log report info ci-gvisor-ptrace-1-race-cover panic: WARNING: circular locking detected: kernel.taskMutex -> mm.mappingRWMutex:
2025/02/07 05:09 gvisor a4a0e84b5cd5 53657d1b .config console log report info ci-gvisor-ptrace-2-race panic: WARNING: circular locking detected: kernel.taskMutex -> mm.mappingRWMutex:
2025/02/02 06:31 gvisor 1a9abee80b7c 568559e4 .config console log report info ci-gvisor-ptrace-2-race panic: WARNING: circular locking detected: kernel.taskMutex -> mm.mappingRWMutex:
2025/02/01 23:25 gvisor 1a9abee80b7c 0dff8567 .config console log report info ci-gvisor-ptrace-2-race panic: WARNING: circular locking detected: kernel.taskMutex -> mm.mappingRWMutex:
2025/02/01 21:20 gvisor 1a9abee80b7c 0dff8567 .config console log report info ci-gvisor-ptrace-2-race-cover panic: WARNING: circular locking detected: kernel.taskMutex -> mm.mappingRWMutex:
2025/02/01 18:06 gvisor 1a9abee80b7c 0dff8567 .config console log report info ci-gvisor-ptrace-2-race panic: WARNING: circular locking detected: kernel.taskMutex -> mm.mappingRWMutex:
2025/02/01 14:22 gvisor 1a9abee80b7c 0dff8567 .config console log report info ci-gvisor-ptrace-1-race-cover panic: WARNING: circular locking detected: kernel.taskMutex -> mm.mappingRWMutex:
2025/01/31 08:59 gvisor e0435b9a53ea 4c6ac32f .config console log report info ci-gvisor-ptrace-2-race panic: WARNING: circular locking detected: kernel.taskMutex -> mm.mappingRWMutex:
2025/01/28 22:02 gvisor 8c386259e0cf 865ef71e .config console log report info ci-gvisor-ptrace-1-race-cover panic: WARNING: circular locking detected: kernel.taskMutex -> mm.mappingRWMutex:
2025/01/23 09:22 gvisor c238e15234fe 9d4f14f8 .config console log report info ci-gvisor-systrap-1-race panic: WARNING: circular locking detected: kernel.taskMutex -> mm.mappingRWMutex:
2025/01/21 08:33 gvisor d22dedf3d55a 6e87cfa2 .config console log report info ci-gvisor-ptrace-3-race panic: WARNING: circular locking detected: kernel.taskMutex -> mm.mappingRWMutex:
2025/01/17 11:34 gvisor 25b1d7134115 bb91bdd4 .config console log report info ci-gvisor-ptrace-2-race panic: WARNING: circular locking detected: kernel.taskMutex -> mm.mappingRWMutex:
2025/01/16 01:52 gvisor 1864d9d091cc 968edaf4 .config console log report info ci-gvisor-ptrace-3-race-cover panic: WARNING: circular locking detected: kernel.taskMutex -> mm.mappingRWMutex:
2025/01/12 00:19 gvisor 4ba931dd226e 6dbc6a9b .config console log report info ci-gvisor-ptrace-3-race-cover panic: WARNING: circular locking detected: kernel.taskMutex -> mm.mappingRWMutex:
2025/01/04 04:23 gvisor 4dbba85b072b f3558dbf .config console log report info ci-gvisor-ptrace-3-race panic: WARNING: circular locking detected: kernel.taskMutex -> mm.mappingRWMutex:
2024/12/28 04:26 gvisor 768db8693149 444551c4 .config console log report info ci-gvisor-ptrace-2-race panic: WARNING: circular locking detected: kernel.taskMutex -> mm.mappingRWMutex:
* Struck through repros no longer work on HEAD.