你使用的Go版本是什么( go version
)?
$ go version
tip
这个问题在最新版本中是否重现?
是的。
你正在使用什么操作系统和处理器架构( go env
)?
go env
输出
$ go env
你做了什么?
在 wsl1 Ubuntu 22.04.3 LTS上运行go test syscall命令。
你期望看到什么?
测试通过。
你实际上看到了什么?
--- FAIL: TestSCMCredentials (0.00s)
creds_test.go:110: ReadMsgUnix flags = 0x0, want 0x40000000 (MSG_CMSG_CLOEXEC)
--- FAIL: TestPidFD (0.00s)
exec_linux_test.go:576: can't start a process: fork/exec /tmp/go-build2291011540/b001/syscall.test: invalid argument
--- FAIL: TestSetuidEtc (0.01s)
syscall_linux_test.go:583: [6] "Setgroups([]int{0,1,2,3})" comparison: "/proc/24624/status" got:"Groups:" want:"Groups:\t0 1 2 3" (bad) [pid=24624 file:'Name: syscall.test
State: S (sleeping)
Tgid: 24624
Pid: 24624
PPid: 24541
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 18
Groups:
VmPeak: 0 kB
VmSize: 1838804 kB
VmLck: 0 kB
VmHWM: 0 kB
VmRSS: 5432 kB
VmData: 0 kB
VmStk: 0 kB
VmExe: 1292 kB
VmLib: 0 kB
VmPTE: 0 kB
Threads: 9
SigQ: 0/0
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000000000000
CapInh: 0000000000000000
CapPrm: 0000001fffffffff
CapEff: 0000001fffffffff
CapBnd: 0000001fffffffff
Cpus_allowed: f
Cpus_allowed_list: 0-3
Mems_allowed: 1
Mems_allowed_list: 0
voluntary_ctxt_switches: 150
nonvoluntary_ctxt_switches: 545
' Pid: 24624]
syscall_linux_test.go:583: [8] "Setgroups([]int{0})" comparison: "/proc/24624/status" got:"Groups:" want:"Groups:\t0" (bad) [pid=24624 file:'Name: syscall.test
State: S (sleeping)
Tgid: 24624
Pid: 24624
PPid: 24541
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 18
Groups:
VmPeak: 0 kB
VmSize: 1838804 kB
VmLck: 0 kB
VmHWM: 0 kB
VmRSS: 5528 kB
VmData: 0 kB
VmStk: 0 kB
VmExe: 1292 kB
VmLib: 0 kB
VmPTE: 0 kB
Threads: 9
SigQ: 0/0
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000000000000
CapInh: 0000000000000000
CapPrm: 0000001fffffffff
CapEff: 0000001fffffffff
CapBnd: 0000001fffffffff
Cpus_allowed: f
Cpus_allowed_list: 0-3
Mems_allowed: 1
Mems_allowed_list: 0
voluntary_ctxt_switches: 150
nonvoluntary_ctxt_switches: 545
' Pid: 24624]
--- FAIL: TestFcntlFlock (0.03s)
syscall_unix_test.go:107: child process: "--- FAIL: TestFcntlFlock (0.00s)\n syscall_unix_test.go:124: FcntlFlock got {1 0 [0 0 0 0] 0 4294967296 0 [0 0 0 0]}, want {1 0 [0 0 0 0] 31415 271828 24624 [0 0 0 0]}\nFAIL\n", exit status 1
FAIL
FAIL syscall 5.177s
2条答案
按热度按时间ccgok5k51#
WSL1使用系统调用模拟,因此我怀疑在这些情况下,WSL1只是简单地没有忠实地模拟系统调用(例如,看起来他们的/proc/PID/status文件并没有实现"Groups"字段)。
我们有一个WSL构建器,但我认为它是WSL2,所以我们看不到WSL1的故障。
cc @golang/windows
zwghvu4y2#
我们在分级讨论中讨论了这个问题,但我们并不确定正确的前进路径是什么,因为我们没有为WSL1和WSL2定义明确的政策。我提交了#63503来尝试解决这个问题。