go: syscall: ntdll.dll errors in rtlGetNtVersionNumbers via os.StartProcess

# go run run.go -G=0 fixedbugs/issue26411.go
exit status 2
panic: Failed to find RtlGetNtVersionNumbers procedure in ntdll.dll: The specified procedure could not be found.

goroutine 165 [running]:
panic({0x163b3a0, 0xc0003027e0})
	C:/workdir/go/src/runtime/panic.go:941 +0x397 fp=0xc0002b68c8 sp=0xc0002b6808 pc=0x1116437
syscall.(*LazyProc).mustFind(...)
	C:/workdir/go/src/syscall/dll_windows.go:293
syscall.(*LazyProc).Addr(...)
	C:/workdir/go/src/syscall/dll_windows.go:300
syscall.rtlGetNtVersionNumbers(0xc000546480?, 0x2?, 0x1bff6b55d00?)
	C:/workdir/go/src/syscall/zsyscall_windows.go:1219 +0x7a fp=0xc0002b6920 sp=0xc0002b68c8 pc=0x115d33a
syscall.StartProcess({0xc0004061e0?, 0xc0005004c8?}, {0xc00029b000, 0x2, 0x2}, 0xc0000ba000?)
	C:/workdir/go/src/syscall/exec_windows.go:317 +0x26b fp=0xc0002b6b88 sp=0xc0002b6920 pc=0x115424b
os.startProcess({0xc0004061e0, 0x30}, {0xc00029b000, 0x2, 0x2}, 0xc0002b6e60)
	C:/workdir/go/src/os/exec_posix.go:54 +0x305 fp=0xc0002b6c68 sp=0xc0002b6b88 pc=0x11be445
os.StartProcess({0xc0004061e0, 0x30}, {0xc00029b000, 0x2, 0x2}, 0xf6df31f8?)
	C:/workdir/go/src/os/exec.go:109 +0x5a fp=0xc0002b6cb0 sp=0xc0002b6c68 pc=0x11bde9a
os/exec.(*Cmd).Start(0xc00037ec60)
	C:/workdir/go/src/os/exec/exec.go:422 +0x611 fp=0xc0002b6eb8 sp=0xc0002b6cb0 pc=0x11ef631
os/exec.(*Cmd).Run(0xc0004061e0?)
	C:/workdir/go/src/os/exec/exec.go:338 +0x1e fp=0xc0002b6ed8 sp=0xc0002b6eb8 pc=0x11eed3e
cmd/go/internal/work.(*Builder).toolID(0xc00007d220, {0x16b450c, 0x7})
	C:/workdir/go/src/cmd/go/internal/work/buildid.go:167 +0x425 fp=0xc0002b70b8 sp=0xc0002b6ed8 pc=0x15599c5
cmd/go/internal/work.(*Builder).buildActionID(0xc00007d220, 0xc0001c9180)
	C:/workdir/go/src/cmd/go/internal/work/exec.go:312 +0xef5 fp=0xc0002b74c0 sp=0xc0002b70b8 pc=0x155faf5
cmd/go/internal/work.(*Builder).build(0xc00007d220, {0xc000018130?, 0xc000406180?}, 0xc0001c9180)
	C:/workdir/go/src/cmd/go/internal/work/exec.go:472 +0x199 fp=0xc0002b7db8 sp=0xc0002b74c0 pc=0x1560f99
cmd/go/internal/work.(*Builder).Do.func2({0x17b24b8, 0xc000018130}, 0xc0001c9180)
	C:/workdir/go/src/cmd/go/internal/work/exec.go:139 +0x5ec fp=0xc0002b7f20 sp=0xc0002b7db8 pc=0x155e8ec
cmd/go/internal/work.(*Builder).Do.func3()
	C:/workdir/go/src/cmd/go/internal/work/exec.go:201 +0xb9 fp=0xc0002b7fe0 sp=0xc0002b7f20 pc=0x155e119
runtime.goexit()
	C:/workdir/go/src/runtime/asm_amd64.s:1571 +0x1 fp=0xc0002b7fe8 sp=0xc0002b7fe0 pc=0x1143761
created by cmd/go/internal/work.(*Builder).Do
	C:/workdir/go/src/cmd/go/internal/work/exec.go:187 +0x3da

greplogs --dashboard -md -l -e 'Failed to find RtlGetNtVersionNumbers'

2021-11-22T18:57:33-5a3d871/windows-amd64-longtest

CC @bufflig

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 26 (22 by maintainers)

Commits related to this issue

Most upvoted comments

We also use //go:cgo_unsafe_args in code generated by cgo. But actually I see now that that code is OK because cgo also emits code to keep all the parameters alive (that code precedes runtime.KeepAlive and should perhaps change to call it).

So, OK, let’s try to remember to fix the uses in the standard library. Thanks.