Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
os: CreateFile fails on Windows/exFAT after CL 143578 #29214
On a fairly clean Windows system running
I bisected the issue to f108158.
What version of Go are you using (
It's possible to setup virtual disks with VHD: https://docs.microsoft.com/en-us/powershell/module/hyper-v/mount-vhd?view=win10-ps
Building Go master now works.
However, here's output from tests running on all different file-systems with drive as the temp (e.g.
Also, due to a typo I noticed that
Yes. We can, probably, create FAT volumes and mount them before builder boots. And have whatever we want tested there. We could, probably, use similar strategy for #28547 too.
I am not surprised that some tests fail in that environment. But FAT file system does not provide many functions that we all expect. So I am not worried that some tests fail.
I don't use FAT file system myself. If you think, there are some important failures there to fix, please, create new issues for them, and than we can decide what to do.
I think it is an obvious bug. I filled #29291 to track it.
Basic code for VHD manipulation:
As for the failures, they are expected:
So they behave on FAT as I would expect. Tests could skip those, but not sure whether it's important enough. (Detection using
For me using FAT filesystem was partly an accident.
@bradfitz Not sure which part of it.
For VHD setup you do need Administrator access. I suspect setting it up with PowerShell prior to launching tests, would be much easier to manage. But, it is possible to use Windows API for it (https://stackoverflow.com/questions/24396644/programmatically-mount-a-microsoft-virtual-hard-drive-vhd), but that still would require admin permissions for running them (and implementing the API).
So you would additionally need https://stackoverflow.com/a/8196291 to check prior to invoking these. Otherwise people would start getting a UAC request every time they run Go tests.
For checking what you can do with a drive,
I would probably setup builder with it, rather than changing it in tests. Then re-run
I tried that, but it does not work on my computer. Apparently you need Hyper-V installed for that. And I cannot install Hyper-V, because it is incompatible with VirtualBox that I use. But if someone can try to stick these commands into $GOPATH/golang.org/x/build/env/windows/startup.ps1 and recreate our builders system with it, we could try and write some tests that use them.