syzbot


DATA RACE in fsutil.(*InodeSimpleExtendedAttributes).GetXattr

Status: fixed on 2020/03/10 21:06
Fix commit: 62bd3ca8a375 Take write lock when removing xattr
First crash: 1731d, last: 1731d

Sample crash report:
WARNING: DATA RACE
Read at 0x00c000736180 by goroutine 183:
  runtime.mapaccess2_faststr()
      GOROOT/src/runtime/map_faststr.go:107 +0x0
  gvisor.dev/gvisor/pkg/sentry/fs/fsutil.(*InodeSimpleExtendedAttributes).GetXattr()
      pkg/sentry/fs/fsutil/inode.go:218 +0x88
  gvisor.dev/gvisor/pkg/sentry/fs/tmpfs.(*fileInodeOperations).GetXattr()
      <autogenerated>:1 +0x9f
  gvisor.dev/gvisor/pkg/sentry/fs.(*Inode).GetXattr()
      pkg/sentry/fs/inode.go:269 +0x1b9
  gvisor.dev/gvisor/pkg/sentry/syscalls/linux.getXattr()
      pkg/sentry/syscalls/linux/sys_xattr.go:113 +0x17b
  gvisor.dev/gvisor/pkg/sentry/syscalls/linux.getXattrFromPath.func1()
      pkg/sentry/syscalls/linux/sys_xattr.go:79 +0xb0
  gvisor.dev/gvisor/pkg/sentry/syscalls/linux.fileOpOn()
      pkg/sentry/syscalls/linux/sys_file.go:111 +0x23f
  gvisor.dev/gvisor/pkg/sentry/syscalls/linux.getXattrFromPath()
      pkg/sentry/syscalls/linux/sys_xattr.go:74 +0x17c
  gvisor.dev/gvisor/pkg/sentry/syscalls/linux.GetXattr()
      pkg/sentry/syscalls/linux/sys_xattr.go:32 +0xa6
DIAGNOSIS:
I0301 00:45:18.305708   24266 main.go:305] ***************************
I0301 00:45:18.305847   24266 main.go:306] Args: [/syzkaller/managers/ptrace-proxy-sandbox-race/current/image -root /syzkaller/managers/ptrace-proxy-sandbox-race/workdir/gvisor_root -watchdog-action=panic -network=none -debug -alsologtostderr -platform=ptrace -file-access=shared -network=sandbox -TESTONLY-unsafe-nonroot debug -stacks --ps ci-gvisor-ptrace-proxy-sandbox-race-3]
I0301 00:45:18.306020   24266 main.go:307] Version release-20200219.0-72-gce4d1e45bb88
I0301 00:45:18.306080   24266 main.go:308] PID: 24266
I0301 00:45:18.306180   24266 main.go:309] UID: 0, GID: 0
I0301 00:45:18.306247   24266 main.go:310] Configuration:
I0301 00:45:18.306315   24266 main.go:311] 		RootDir: /syzkaller/managers/ptrace-proxy-sandbox-race/workdir/gvisor_root
I0301 00:45:18.306373   24266 main.go:312] 		Platform: ptrace
I0301 00:45:18.306442   24266 main.go:313] 		FileAccess: shared, overlay: false
I0301 00:45:18.306525   24266 main.go:314] 		Network: sandbox, logging: false
I0301 00:45:18.306591   24266 main.go:315] 		Strace: false, max size: 1024, syscalls: []
I0301 00:45:18.306670   24266 main.go:316] ***************************
W0301 00:45:18.306737   24266 main.go:321] Block the TERM signal. This is only safe in tests!
D0301 00:45:18.306911   24266 container.go:159] Load container "/syzkaller/managers/ptrace-proxy-sandbox-race/workdir/gvisor_root" "ci-gvisor-ptrace-proxy-sandbox-race-3"
D0301 00:45:18.312907   24266 container.go:592] Signal container "ci-gvisor-ptrace-proxy-sandbox-race-3": signal 0
D0301 00:45:18.313065   24266 sandbox.go:806] Signal sandbox "ci-gvisor-ptrace-proxy-sandbox-race-3"
D0301 00:45:18.313146   24266 sandbox.go:318] Connecting to sandbox "ci-gvisor-ptrace-proxy-sandbox-race-3"
D0301 00:45:18.313572   24266 urpc.go:534] urpc: successfully marshalled 117 bytes.
I0301 00:45:18.414636   24266 debug.go:122] Found sandbox "ci-gvisor-ptrace-proxy-sandbox-race-3", PID: 19802
I0301 00:45:18.414789   24266 debug.go:131] Retrieving sandbox stacks
D0301 00:45:18.414871   24266 sandbox.go:924] Stacks sandbox "ci-gvisor-ptrace-proxy-sandbox-race-3"
D0301 00:45:18.414963   24266 sandbox.go:318] Connecting to sandbox "ci-gvisor-ptrace-proxy-sandbox-race-3"
W0301 00:45:18.415113   24266 error.go:48] FATAL ERROR: retrieving stacks: connecting to control server at PID 19802: connection refused
retrieving stacks: connecting to control server at PID 19802: connection refused
W0301 00:45:18.415430   24266 main.go:338] Failure to execute command, err: 1


Error collecting stacks: failed to run ["/syzkaller/managers/ptrace-proxy-sandbox-race/current/image" "-root" "/syzkaller/managers/ptrace-proxy-sandbox-race/workdir/gvisor_root" "-watchdog-action=panic" "-network=none" "-debug" "-alsologtostderr" "-platform=ptrace" "-file-access=shared" "-network=sandbox" "-TESTONLY-unsafe-nonroot" "debug" "-stacks" "--ps" "ci-gvisor-ptrace-proxy-sandbox-race-3"]: exit status 128
I0301 00:45:18.305708   24266 main.go:305] ***************************
I0301 00:45:18.305847   24266 main.go:306] Args: [/syzkaller/managers/ptrace-proxy-sandbox-race/current/image -root /syzkaller/managers/ptrace-proxy-sandbox-race/workdir/gvisor_root -watchdog-action=panic -network=none -debug -alsologtostderr -platform=ptrace -file-access=shared -network=sandbox -TESTONLY-unsafe-nonroot debug -stacks --ps ci-gvisor-ptrace-proxy-sandbox-race-3]
I0301 00:45:18.306020   24266 main.go:307] Version release-20200219.0-72-gce4d1e45bb88
I0301 00:45:18.306080   24266 main.go:308] PID: 24266
I0301 00:45:18.306180   24266 main.go:309] UID: 0, GID: 0
I0301 00:45:18.306247   24266 main.go:310] Configuration:
I0301 00:45:18.306315   24266 main.go:311] 		RootDir: /syzkaller/managers/ptrace-proxy-sandbox-race/workdir/gvisor_root
I0301 00:45:18.306373   24266 main.go:312] 		Platform: ptrace
I0301 00:45:18.306442   24266 main.go:313] 		FileAccess: shared, overlay: false
I0301 00:45:18.306525   24266 main.go:314] 		Network: sandbox, logging: false
I0301 00:45:18.306591   24266 main.go:315] 		Strace: false, max size: 1024, syscalls: []
I0301 00:45:18.306670   24266 main.go:316] ***************************
W0301 00:45:18.306737   24266 main.go:321] Block the TERM signal. This is only safe in tests!
D0301 00:45:18.306911   24266 container.go:159] Load container "/syzkaller/managers/ptrace-proxy-sandbox-race/workdir/gvisor_root" "ci-gvisor-ptrace-proxy-sandbox-race-3"
D0301 00:45:18.312907   24266 container.go:592] Signal container "ci-gvisor-ptrace-proxy-sandbox-race-3": signal 0
D0301 00:45:18.313065   24266 sandbox.go:806] Signal sandbox "ci-gvisor-ptrace-proxy-sandbox-race-3"
D0301 00:45:18.313146   24266 sandbox.go:318] Connecting to sandbox "ci-gvisor-ptrace-proxy-sandbox-race-3"
D0301 00:45:18.313572   24266 urpc.go:534] urpc: successfully marshalled 117 bytes.
I0301 00:45:18.414636   24266 debug.go:122] Found sandbox "ci-gvisor-ptrace-proxy-sandbox-race-3", PID: 19802
I0301 00:45:18.414789   24266 debug.go:131] Retrieving sandbox stacks
D0301 00:45:18.414871   24266 sandbox.go:924] Stacks sandbox "ci-gvisor-ptrace-proxy-sandbox-race-3"
D0301 00:45:18.414963   24266 sandbox.go:318] Connecting to sandbox "ci-gvisor-ptrace-proxy-sandbox-race-3"
W0301 00:45:18.415113   24266 error.go:48] FATAL ERROR: retrieving stacks: connecting to control server at PID 19802: connection refused
retrieving stacks: connecting to control server at PID 19802: connection refused
W0301 00:45:18.415430   24266 main.go:338] Failure to execute command, err: 1
  gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).executeSyscall()
      pkg/sentry/kernel/task_syscall.go:170 +0x44d
  gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallInvoke()
      pkg/sentry/kernel/task_syscall.go:291 +0xb4
  gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallEnter()
      pkg/sentry/kernel/task_syscall.go:252 +0x109
  gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscall()
      pkg/sentry/kernel/task_syscall.go:227 +0x1b3
  gvisor.dev/gvisor/pkg/sentry/kernel.(*runApp).execute()
      pkg/sentry/kernel/task_run.go:232 +0x1aaa
  gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).run()
      pkg/sentry/kernel/task_run.go:92 +0x320

Crashes (3):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2020/03/01 00:46 gvisor ce4d1e45bb88 c88c7b75 .config console log report syz ci-gvisor-ptrace-proxy-sandbox-race
2020/03/01 00:30 gvisor ce4d1e45bb88 c88c7b75 .config console log report syz ci-gvisor-ptrace-direct-overlay-host-race
2020/03/01 00:11 gvisor ce4d1e45bb88 c88c7b75 .config console log report ci-gvisor-ptrace-direct-overlay-host-race
* Struck through repros no longer work on HEAD.