Skip to content

os/exec: TestLookPath fails on Windows #42264

@kfsone

Description

@kfsone

What version of Go are you using (go version)?

from source:

  master 05b6118139 and release-branch.go1.15 8f14c1840d

Does this issue reproduce with the latest release?

Yes

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
# for bootstrap:
> go env
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\oliver\AppData\Local\go-build
set GOENV=C:\Users\oliver\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\oliver\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\oliver\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=C:\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=C:\Users\oliver\go\src\github.com\kfsone\go\src\go.mod
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\oliver\AppData\Local\Temp\go-build690396070=/tmp/go-build -gno-record-gcc-switches

Windows environment:

ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\oliver\AppData\Roaming
ChocolateyInstall=C:\ProgramData\chocolatey
ChocolateyLastPathUpdate=132068406204961970
ChocolateyToolsLocation=C:\tools
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=SPUD
ComSpec=C:\WINDOWS\system32\cmd.exe
DOCKER_TOOLBOX_INSTALL_PATH=C:\Program Files\Docker Toolbox
DriverData=C:\Windows\System32\Drivers\DriverData
GOPATH=C:\Users\oliver\go
GOROOT=C:\Go
HOMEDRIVE=C:
HOMEPATH=\Users\oliver
LOCALAPPDATA=C:\Users\oliver\AppData\Local
LOGONSERVER=\SPUD
NUMBER_OF_PROCESSORS=8
NUO_DEVROOT=G:\Development\Projects\Evil02
OculusBase=C:\Program Files\Oculus
OneDrive=C:\Users\oliver\OneDrive
OneDriveConsumer=C:\Users\oliver\OneDrive
OS=Windows_NT
Path=C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Python39\Scripts;C:\Python39;C:\Python38;C:\Python38\Scripts;C:\Python27;C:\Python27\Scripts;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\ProgramData\chocolatey\bin;C:\Program Files\Microsoft VS Code\bin;C:\Program Files (x86)\vim\vim80;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\TDM-GCC-64\bin;C:\Program Files\PuTTY;C:\Program Files\Microsoft SQL Server\130\Tools\Binn;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn;C:\Program Files\PowerShell\7-preview\preview;C:\Program Files\Oculus\Support\oculus-runtime;C:\Program Files\dotnet;C:\Program Files\Perforce;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\Git\cmd;C:\Go\bin;C:\Users\oliver\AppData\Local\Microsoft\WindowsApps;C:\Users\oliver\go\bin;C:\Users\oliver\AppData\Roaming\Python\Python38\Scripts;C:\Program Files\Docker Toolbox;C:\ProgramData\chocolatey\lib\msys2;C:\tools\msys64;C:\Users\oliver\AppData\Local\Programs\Microsoft VS Code Insiders\bin;C:\Users\oliver.dotnet\tools;C:\Users\oliver\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\oliver.cargo\bin;C:\Ruby27-x64\bin;C:\Users\oliver.dotnet\tools;C:\Users\oliver\AppData\Local\Microsoft\WindowsApps;C:\Users\oliver\go\bin
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW;.RB;.RBW
POWERSHELL_DISTRIBUTION_CHANNEL=MSI:Windows 10 Pro
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 158 Stepping 9, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=9e09
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
PUBLIC=C:\Users\Public
RUBYOPT=-Eutf-8
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\Users\oliver\AppData\Local\Temp
TMP=C:\Users\oliver\AppData\Local\Temp
USERDOMAIN=SPUD
USERDOMAIN_ROAMINGPROFILE=SPUD
USERNAME=oliver
USERPROFILE=C:\Users\oliver
VS140COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools
windir=C:\WINDOWS

Operating system:
OS Microsoft Windows 10.0.20241
Platform Win32NT

What did you do?

go\src\> git pull
go\src\> git checkout --track release-branch.go1.15
go\src\> all.bat

> git status
On branch release-branch.go1.15
Your branch is up to date with 'origin/release-branch.go1.15'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        ../.idea/

> git log
commit 8f14c1840d15233b7f3d08f0acf0b0559d465a56 (HEAD -> release-branch.go1.15, origin/release-branch.go1.15)
Author: Than McIntosh <thanm@google.com>
Date:   Wed Sep 30 12:52:47 2020 -0400

    [release-branch.go1.15] cmd/{compile,link}: backport fix for issue 39757

What did you expect to see?

ALL TESTS PASSED

What did you see instead?

Failure: (full output below)

ok      os      6.163s
--- FAIL: TestLookPath (7.50s)
    lp_windows_test.go:147: test={rootDir:C:\Users\oliver\AppData\Local\Temp\TestLookPath432936655\d16 PATH:p1;p2 PATHEXT:.COM;.EXE;.BAT files:[p1\a.bat p1\a.exe p2\a.bat p2\a.exe] searchFor:a fails:false} failed: expected to find "p1\\a.bat", but found "p1\\a.exe"

This seems to be this test:

PATHEXT: `.COM;.EXE;.BAT`,
PATH: `p1;p2`,
files: []string{`p1\a.bat`, `p1\a.exe`, `p2\a.bat`, `p2\a.exe`},
searchFor: `a`,

MS's documentation (https://docs.microsoft.com/en-us/previous-versions//cc723564(v=technet.10)? does not stipulate the order used, but at face value I would have expected it to find .EXE before .BAT based on the PATHEXT variable. However, I can confirm that from CMD I can reproduce the original ".bat" behaviour on the same system:

C:\Users\oliver\AppData\Local\Temp>p\printpath.bat
.bat
C:\Users\oliver\AppData\Local\Temp>p\printpath.exe
C:\Users\oliver\AppData\Local\Temp\p1\printpath.go

C:\Users\oliver\AppData\Local\Temp>mkdir p1
C:\Users\oliver\AppData\Local\Temp>mkdir p2
C:\Users\oliver\AppData\Local\Temp>copy p\printpath.bat p1\a.bat
C:\Users\oliver\AppData\Local\Temp>copy p\printpath.bat p2\a.bat
C:\Users\oliver\AppData\Local\Temp>copy p\printpath.exe p1\a.exe
C:\Users\oliver\AppData\Local\Temp>copy p\printpath.exe p2\a.exe
C:\Users\oliver\AppData\Local\Temp>set PATH=p1;p2;%PATH%
C:\Users\oliver\AppData\Local\Temp>set PATHEXT=.COM;.EXE;.BAT
C:\Users\oliver\AppData\Local\Temp>a
.bat
C:\Users\oliver\AppData\Local\Temp>set PATHEXT=
C:\Users\oliver\AppData\Local\Temp>a
.bat
C:\Users\oliver\AppData\Local\Temp>set PATHEXT=.EXE
C:\Users\oliver\AppData\Local\Temp>a
C:\Users\oliver\AppData\Local\Temp\p1\printpath.go
C:\Users\oliver\AppData\Local\Temp>set PATHEXT=.EXE;.BAT
C:\Users\oliver\AppData\Local\Temp>a
.bat
C:\Users\oliver\AppData\Local\Temp>set PATHEXT=.BAT;.EXE
C:\Users\oliver\AppData\Local\Temp>a
.bat

However, powershell behaves differently, so perhaps the behavior is (either) inconsistent or being changed.

[C:\Users\oliver\AppData\Local\Temp]
> $env:PATH = "p1;p2;${ENV:PATH}"
> $env:PATHEXT = ".COM;.EXE;.BAT;.CMD"
> a
C:\Users\oliver\AppData\Local\Temp\p1\printpath.go
>$env:PATHEXT= ".COM;.BAT;.EXE;.CMD"
> cmd /c a
.bat

full output:

go\src>all.bat
Building Go cmd/dist using c:\go
Building Go toolchain1 using c:\go.
Building Go bootstrap cmd/go (go_bootstrap) using Go toolchain1.
Building Go toolchain2 using go_bootstrap and Go toolchain1.
Building Go toolchain3 using go_bootstrap and Go toolchain2.
Building packages and commands for windows/amd64.


##### Testing packages.
ok      archive/tar     0.070s
ok      archive/zip     0.103s
ok      bufio   0.105s
ok      bytes   0.234s
ok      compress/bzip2  0.079s
ok      compress/flate  0.871s
ok      compress/gzip   0.081s
ok      compress/lzw    0.036s
ok      compress/zlib   0.100s
ok      container/heap  0.044s
ok      container/list  0.037s
ok      container/ring  0.031s
ok      context 0.059s
ok      crypto  0.035s
ok      crypto/aes      0.061s
ok      crypto/cipher   0.038s
ok      crypto/des      0.038s
ok      crypto/dsa      0.047s
ok      crypto/ecdsa    0.172s
ok      crypto/ed25519  0.089s
ok      crypto/elliptic 0.088s
ok      crypto/hmac     0.034s
ok      crypto/internal/subtle  0.038s
ok      crypto/md5      0.038s
ok      crypto/rand     0.060s
ok      crypto/rc4      0.060s
ok      crypto/rsa      0.117s
ok      crypto/sha1     0.036s
ok      crypto/sha256   0.058s
ok      crypto/sha512   0.044s
ok      crypto/subtle   0.048s
ok      crypto/tls      1.348s
--- FAIL: TestSystemVerify (0.08s)
    --- FAIL: TestSystemVerify/SHA-384 (0.01s)
        verify_test.go:584: no expected chain matched BR/Moip Pagamentos S.A./MOIP,SSL Blindado EV/api.moip.com.br -> GB/COMODO CA Limited//COMODO RSA Extended Validation Secure Server CA -> GB/COMODO CA Limited//COMODO RSA Certification Authority
FAIL
FAIL    crypto/x509     0.411s
ok      database/sql    0.667s
ok      database/sql/driver     0.046s
ok      debug/dwarf     0.049s
ok      debug/elf       0.065s
ok      debug/gosym     0.031s
ok      debug/macho     0.034s
ok      debug/pe        16.459s
ok      debug/plan9obj  0.034s
ok      encoding/ascii85        0.054s
ok      encoding/asn1   0.040s
ok      encoding/base32 0.117s
ok      encoding/base64 0.059s
ok      encoding/binary 0.040s
ok      encoding/csv    0.040s
ok      encoding/gob    0.053s
ok      encoding/hex    0.053s
ok      encoding/json   0.333s
ok      encoding/pem    0.048s
ok      encoding/xml    0.047s
ok      errors  0.047s
ok      expvar  0.039s
ok      flag    0.194s
ok      fmt     0.128s
ok      go/ast  0.048s
ok      go/build        2.122s
ok      go/constant     0.054s
ok      go/doc  0.124s
ok      go/format       0.037s
ok      go/importer     0.336s
ok      go/internal/gccgoimporter       0.157s
ok      go/internal/gcimporter  0.375s
ok      go/internal/srcimporter 8.884s
ok      go/parser       0.054s
ok      go/printer      0.283s
ok      go/scanner      0.039s
ok      go/token        0.050s
ok      go/types        1.297s
ok      hash    0.051s
ok      hash/adler32    0.043s
ok      hash/crc32      0.037s
ok      hash/crc64      0.035s
ok      hash/fnv        0.046s
ok      hash/maphash    0.127s
ok      html    0.035s
ok      html/template   0.297s
ok      image   0.107s
ok      image/color     0.053s
ok      image/draw      0.091s
ok      image/gif       0.486s
ok      image/jpeg      0.223s
ok      image/png       0.085s
ok      index/suffixarray       0.247s
ok      internal/cpu    0.054s
ok      internal/fmtsort        0.035s
ok      internal/poll   0.121s
ok      internal/profile        0.038s
ok      internal/reflectlite    0.090s
ok      internal/singleflight   0.046s
ok      internal/syscall/windows        0.059s
ok      internal/syscall/windows/registry       0.069s
ok      internal/trace  0.095s
ok      internal/unsafeheader   0.051s
ok      internal/xcoff  0.068s
ok      io      0.065s
ok      io/ioutil       0.111s
ok      log     0.046s
ok      math    0.038s
ok      math/big        1.096s
ok      math/bits       0.034s
ok      math/cmplx      0.046s
ok      math/rand       0.147s
ok      mime    0.157s
ok      mime/multipart  0.376s
ok      mime/quotedprintable    0.124s
ok      net     18.407s
ok      net/http        10.162s
ok      net/http/cgi    0.405s
ok      net/http/cookiejar      0.040s
ok      net/http/fcgi   0.040s
ok      net/http/httptest       4.486s
ok      net/http/httptrace      0.031s
ok      net/http/httputil       0.194s
ok      net/http/internal       0.028s
ok      net/http/pprof  5.258s
ok      net/internal/socktest   0.030s
ok      net/mail        0.032s
ok      net/rpc 0.069s
ok      net/rpc/jsonrpc 0.040s
ok      net/smtp        0.054s
ok      net/textproto   0.031s
ok      net/url 0.035s
ok      os      6.163s
--- FAIL: TestLookPath (7.50s)
    lp_windows_test.go:147: test={rootDir:C:\Users\oliver\AppData\Local\Temp\TestLookPath432936655\d16 PATH:p1;p2 PATHEXT:.COM;.EXE;.BAT files:[p1\a.bat p1\a.exe p2\a.bat p2\a.exe] searchFor:a fails:false} failed: expected to find "p1\\a.bat", but found "p1\\a.exe"
FAIL
FAIL    os/exec 15.464s
ok      os/signal       3.386s
ok      os/user 0.065s
ok      path    0.061s
ok      path/filepath   2.471s
ok      plugin  0.049s
ok      reflect 0.611s
ok      regexp  0.090s
ok      regexp/syntax   0.317s
ok      runtime 108.512s
ok      runtime/debug   0.106s
ok      runtime/internal/atomic 0.046s
ok      runtime/internal/math   0.033s
ok      runtime/internal/sys    0.032s
ok      runtime/pprof   12.341s
ok      runtime/race    0.772s
ok      runtime/trace   0.780s
ok      sort    0.097s
ok      strconv 0.440s
ok      strings 0.155s
ok      sync    0.612s
ok      sync/atomic     0.120s
ok      syscall 0.062s
ok      testing 0.725s
ok      testing/iotest  0.033s
ok      testing/quick   0.196s
ok      text/scanner    0.052s
ok      text/tabwriter  0.056s
ok      text/template   0.169s
ok      text/template/parse     0.050s
ok      time    2.129s
ok      unicode 0.042s
ok      unicode/utf16   0.031s
ok      unicode/utf8    0.040s
ok      cmd/addr2line   7.452s
ok      cmd/api 30.241s
ok      cmd/asm/internal/asm    1.312s
ok      cmd/asm/internal/lex    0.050s
ok      cmd/compile     0.083s
ok      cmd/compile/internal/gc 18.173s
ok      cmd/compile/internal/logopt     2.692s
ok      cmd/compile/internal/ssa        1.632s
ok      cmd/compile/internal/syntax     0.070s
ok      cmd/compile/internal/test       0.139s [no tests to run]
ok      cmd/compile/internal/types      0.061s
ok      cmd/cover       11.011s
ok      cmd/doc 0.524s
ok      cmd/fix 18.838s
ok      cmd/go  104.249s
ok      cmd/go/internal/auth    0.103s
ok      cmd/go/internal/cache   7.167s
ok      cmd/go/internal/generate        0.932s
ok      cmd/go/internal/get     0.321s
ok      cmd/go/internal/imports 0.049s
ok      cmd/go/internal/load    0.058s
ok      cmd/go/internal/lockedfile      0.840s
ok      cmd/go/internal/lockedfile/internal/filelock    0.234s
ok      cmd/go/internal/modconv 0.144s
ok      cmd/go/internal/modfetch        0.127s
ok      cmd/go/internal/modfetch/codehost       0.085s
ok      cmd/go/internal/modfetch/zip_sum_test   0.126s
ok      cmd/go/internal/modload 0.159s
ok      cmd/go/internal/mvs     0.043s
ok      cmd/go/internal/par     0.051s
ok      cmd/go/internal/renameio        4.644s
ok      cmd/go/internal/search  0.047s
ok      cmd/go/internal/test    0.339s
ok      cmd/go/internal/txtar   0.047s
ok      cmd/go/internal/web     0.132s
ok      cmd/go/internal/work    0.482s
ok      cmd/gofmt       0.436s
ok      cmd/internal/buildid    0.526s
ok      cmd/internal/dwarf      0.047s
ok      cmd/internal/edit       0.032s
ok      cmd/internal/goobj      3.755s
ok      cmd/internal/goobj2     0.058s
ok      cmd/internal/moddeps    28.404s
ok      cmd/internal/obj        0.049s
ok      cmd/internal/obj/arm64  0.751s
ok      cmd/internal/obj/ppc64  0.384s
ok      cmd/internal/obj/riscv  0.569s
ok      cmd/internal/obj/x86    5.591s
ok      cmd/internal/objabi     0.038s
ok      cmd/internal/src        0.059s
ok      cmd/internal/test2json  0.198s
ok      cmd/link        37.978s
ok      cmd/link/internal/benchmark     0.056s
ok      cmd/link/internal/ld    16.040s
ok      cmd/link/internal/loader        0.071s
ok      cmd/link/internal/sym   0.048s
ok      cmd/nm  11.691s
ok      cmd/objdump     7.978s
ok      cmd/oldlink/internal/sym        0.051s
ok      cmd/pack        6.565s
ok      cmd/trace       0.457s
ok      cmd/vet 16.062s
FAIL
go tool dist: Failed: exit status 1

Crypto issue is tracked here: #40604

Same errors occur from master

go\src>git rev-parse --verify HEAD
05b6118139d880a5bced23da9d07bdb0db8e7084

Metadata

Metadata

Assignees

No one assigned

    Labels

    FrozenDueToAgeNeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.OS-Windows

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions