Description
Windows CI has stopped working due to an image update on GitHub's side. The new image is win19/20210907.4 (included software). The previous image was win19/20210903.7 (included software). The image diff is here.
There are two errors showing up described below.
I think the most likely culprit is the addition of Windows 10 SDK 20348. Previously, the most recent SDK installed was 19041.
There are some interesting release notes for 20348 here:
Clang/LLVM for Windows v11 targeting ARM64 is not compatible with the latest winnt.h
As a workaround, use the previous version of the Windows 10 SDK (build 19041), or clang/LLVM for Windows v10 when targeting ARM64 platforms
I don't know what "LLVM for Windows v11" means in this context, but it seems fishy.
dist-aarch64-msvc fails with undeclared identifier '__umulh'
While building profiler_builtins
there is an error:
cargo:warning=In file included from ../../src/llvm-project/compiler-rt\lib\profile\InstrProfilingRuntime.cpp:11:
cargo:warning=In file included from ../../src/llvm-project/compiler-rt\lib\profile/InstrProfiling.h:12:
cargo:warning=In file included from ../../src/llvm-project/compiler-rt\lib\profile/InstrProfilingPort.h:65:
cargo:warning=In file included from C:\Program Files (x86)\Windows Kits\10\include\10.0.20348.0\um\windows.h:171:
cargo:warning=In file included from C:\Program Files (x86)\Windows Kits\10\include\10.0.20348.0\shared\windef.h:24:
cargo:warning=In file included from C:\Program Files (x86)\Windows Kits\10\include\10.0.20348.0\shared\minwindef.h:182:
cargo:warning=C:\Program Files (x86)\Windows Kits\10\include\10.0.20348.0\um\winnt.h(6370,20): error: use of undeclared identifier '__umulh'
cargo:warning= *HighProduct = UnsignedMultiplyHigh(Multiplier, Multiplicand);
cargo:warning= ^
cargo:warning=C:\Program Files (x86)\Windows Kits\10\include\10.0.20348.0\um\winnt.h(6236,30): note: expanded from macro 'UnsignedMultiplyHigh'
cargo:warning=#define UnsignedMultiplyHigh __umulh
cargo:warning= ^
cargo:warning=1 error generated.
exit code: 1
--- stderr
error occurred: Command "D:/a/rust/rust/citools/clang-rust/bin/clang-cl.exe" "-nologo" "-MT" "-O2" "-Z7" "-Brepro" "--target=aarch64-pc-windows-msvc" "-I" "../../src/llvm-project/compiler-rt\\include" "/Zl" "-Dstrdup=_strdup" "-Dopen=_open" "-Dfdopen=_fdopen" "-Dgetpid=_getpid" "-Dfileno=_fileno" "-DCOMPILER_RT_HAS_ATOMICS=1" "-FoD:\\a\\rust\\rust\\build\\x86_64-pc-windows-msvc\\stage1-std\\aarch64-pc-windows-msvc\\release\\build\\profiler_builtins-7ff61bd0c2dd5988\\out\\../../src/llvm-project/compiler-rt\\lib\\profile\\InstrProfilingRuntime.o" "-c" "../../src/llvm-project/compiler-rt\\lib\\profile\\InstrProfilingRuntime.cpp" with args "clang-cl.exe" did not execute successfully (status code exit code: 1).
Full log example here: https://github.com/rust-lang-ci/rust/actions/runs/1218329003
NatVis error
There are three debuginfo tests that are failing:
failures:
[debuginfo-cdb] debuginfo\basic-types.rs
[debuginfo-cdb] debuginfo\msvc-pretty-enums.rs
[debuginfo-cdb] debuginfo\pretty-std.rs
These are failing because some Rust types are not displaying correctly (like strings).
Full log example here: https://github.com/rust-lang-ci/rust/actions/runs/1218098190
Failing tests report Windows Debugger Version 10.0.20348.1.
Comments
I don't know of the proper way of reverting to a previous Windows SDK is. My understanding is that is usually done by calling vcvarsall.bat
, where you can specify the SDK version (and sets a bunch of environment variables). Calling that on CI is awkward (it only really works with cmd, or do weird things like this).
Regarding the cdb errors, I'm also wondering if that might have been caused by the update to Windows SDK. It is not really clear to me the relationship between the cdb.exe and the Windows Kit (but cdb is installed in Windows Kits\10\Debuggers
).