The compilation of crates fails in various ways when a certain combination of rustflags is set.
[build]
rustflags = [
"-Clinker-flavor=lld-link",
"-Ctarget-cpu=sandybridge"
]
With this configuration I encountered the following issues:
sd crate (version 0.7.5), rustc crashes with a STATUS_ACCESS_VIOLATION. See the detailled error output below.starship, the resulting binary doesn't work correctly (see the issue here).Using each rustflag individually does not result in this issue. I could reproduce this both on stable and the recent nightly, and with target-cpu set to either sandybridge, haswell or znver2 (without trying more).
rustc --version --verbose:
rustc 1.45.0-nightly (99cb9ccb9 2020-05-11)
binary: rustc
commit-hash: 99cb9ccb9ca2067ad6e60508e3d52da77396b2f1
commit-date: 2020-05-11
host: x86_64-pc-windows-msvc
release: 1.45.0-nightly
LLVM version: 9.0
Error during cargo install --force sd
❯ cargo install --force sd
Updating crates.io index
Installing sd v0.7.5
Compiling proc-macro2 v1.0.12
Compiling autocfg v1.0.0
Compiling unicode-xid v0.2.0
Compiling syn v1.0.20
Compiling cfg-if v0.1.10
Compiling lazy_static v1.4.0
Compiling version_check v0.9.1
Compiling winapi v0.3.8
Compiling getrandom v0.1.14
Compiling maybe-uninit v2.0.0
Compiling bitflags v1.2.1
Compiling unicode-width v0.1.7
Compiling libc v0.2.70
Compiling unicode-segmentation v1.6.0
Compiling scopeguard v1.1.0
Compiling memchr v2.3.3
Compiling vec_map v0.8.2
Compiling strsim v0.8.0
Compiling roff v0.1.0
Compiling rayon-core v1.7.0
Compiling ppv-lite86 v0.2.6
Compiling either v1.5.3
Compiling regex-syntax v0.6.17
Compiling unescape v0.1.0
Compiling thread_local v1.0.1
Compiling textwrap v0.11.0
Compiling man v0.3.0
Compiling heck v0.3.1
Compiling crossbeam-utils v0.7.2
Compiling memoffset v0.5.4
Compiling crossbeam-epoch v0.8.2
Compiling rand_core v0.5.1
Compiling proc-macro-error-attr v1.0.2
Compiling proc-macro-error v1.0.2
Compiling aho-corasick v0.7.10
Compiling num_cpus v1.13.0
Compiling rand_chacha v0.2.2
Compiling quote v1.0.4
Compiling rand v0.7.3
Compiling crossbeam-queue v0.2.1
Compiling crossbeam-deque v0.7.3
Compiling rayon v1.3.0
Compiling regex v1.3.7
Compiling syn-mid v0.5.0
Compiling atty v0.2.14
Compiling remove_dir_all v0.5.2
Compiling memmap v0.7.0
Compiling clap v2.33.1
Compiling tempfile v3.1.0
Compiling thiserror-impl v1.0.16
Compiling structopt-derive v0.4.7
Compiling thiserror v1.0.16
Compiling structopt v0.3.14
Compiling sd v0.7.5
error: failed to compile `sd v0.7.5`, intermediate artifacts can be found at `C:\Users\Chris\AppData\Local\Temp\cargo-installLldcG5`
Caused by:
could not compile `sd`.
Caused by:
process didn't exit successfully: `rustc --crate-name build_script_build --edition=2018 C:\Users\Chris\.cargo\registry\src\github.com-1ecc6299db9ec823\sd-0.7.5\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C opt-level=3 -Cembed-bitcode=no -C codegen-units=1 -C metadata=a9d539b504a5dcff -C extra-filename=-a9d539b504a5dcff --out-dir C:\Users\Chris\AppData\Local\Temp\cargo-installLldcG5\release\build\sd-a9d539b504a5dcff -L dependency=C:\Users\Chris\AppData\Local\Temp\cargo-installLldcG5\release\deps --extern man=C:\Users\Chris\AppData\Local\Temp\cargo-installLldcG5\release\deps\libman-415ee6d25251500d.rlib --extern structopt=C:\Users\Chris\AppData\Local\Temp\cargo-installLldcG5\release\deps\libstructopt-75fe88c87a7c5329.rlib --cap-lints allow -Clinker-flavor=lld-link -Ctarget-cpu=sandybridge` (exit code: 0xc0000005, STATUS_ACCESS_VIOLATION)
Also possibly relevant for #71520.
I was able to reproduce the errors by specifying (in addition to linker-flavor) the target-features +fma or +avx instead of setting a target-cpu. Other target-features (e.g. +sse3,sse4.1) work fine as far as I can tell.
Possibly related to #64609?
Possibly related to #71504?
This was briefly mentioned during today's meeting
It may be good to figure out if this happens on lld on Linux:
@rustbot ping cleanup
or if it's just Windows thing:
@rustbot ping windows
Removing nomination also.
Hey Cleanup Crew ICE-breakers! This bug has been identified as a good
"Cleanup ICE-breaking candidate". In case it's useful, here are some
[instructions] for tackling these sorts of bugs. Maybe take a look?
Thanks! <3
cc @AminArria @camelid @chrissimpkins @contrun @DutchGhost @elshize @ethanboxx @h-michael @HallerPatrick @hdhoang @hellow554 @imtsuki @kanru @KarlK90 @LeSeulArtichaut @MAdrianMattocks @matheus-consoli @mental32 @nmccarty @Noah-Kennedy @pard68 @PeytonT @pierreN @Redblueflame @RobbieClarken @RobertoSnap @robjtede @SarthakSingh31 @senden9 @shekohex @sinato @spastorino @turboladen @woshilapin @yerke
Second @rustbot ping didn't work ...
@rustbot ping windows
@rustbot ping windows
Hey Windows Group! This bug has been identified as a good "Windows candidate".
In case it's useful, here are some [instructions] for tackling these sorts of
bugs. Maybe take a look?
Thanks! <3
cc @arlosi @danielframpton @gdr-at-ms @kennykerr @luqmana @lzybkr @retep998 @rylev @sivadeilra @spastorino
I spent some time trying to reproduce this, but wasn't able to. Can you provide more specific repro steps?
Alternately, can you run rustc.exe under WinDbg, and show the stack trace and u @rip at the faulting address?
What model CPU are you running on? Is it possible that the target features you're requesting are not available on that CPU?
@sivadeilra I'm using a AMD Ryzen 5 3600X, so at least -Ctarget-cpu=znver2 should be an exact match. AVX is definitely supported as well.
I can still reproduce the STATUS_ACCESS_VIOLATION with the current nightly during cargo install --force sd --version 0.7.5.
Here are the exact reproduction steps, with -Ctarget-feature=+avx to limit the features used:
Clean the registry to rule out interference with pre-existing caches:
rm -r -Force ~/.cargo/registry
Install sd:
cargo install --force sd --version 0.7.5
Updating crates.io index
Downloaded sd v0.7.5
Downloaded 1 crate (14.8 KB) in 0.93s
Installing sd v0.7.5
Downloaded aho-corasick v0.7.13
[...]
Compiling structopt v0.3.15
Compiling sd v0.7.5
error: failed to compile `sd v0.7.5`, intermediate artifacts can be found at `C:\Users\Chris\AppData\Local\Temp\cargo-install8LONA5`
Caused by:
could not compile `sd`.
Caused by:
process didn't exit successfully: `rustc --crate-name build_script_build --edition=2018 C:\Users\Chris\.cargo\registry\src\github.com-1ecc6299db9ec823\sd-0.7.5\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C opt-level=3 -Cembed-bitcode=no -C codegen-units=1 -C metadata=d011dbc6f5f1cce2 -C extra-filename=-d011dbc6f5f1cce2 --out-dir C:\Users\Chris\AppData\Local\Temp\cargo-install8LONA5\release\build\sd-d011dbc6f5f1cce2 -L dependency=C:\Users\Chris\AppData\Local\Temp\cargo-install8LONA5\release\deps --extern man=C:\Users\Chris\AppData\Local\Temp\cargo-install8LONA5\release\deps\libman-b99848b80d918758.rlib --extern structopt=C:\Users\Chris\AppData\Local\Temp\cargo-install8LONA5\release\deps\libstructopt-ee882b02652d4990.rlib --cap-lints allow -Clinker-flavor=lld-link -Ctarget-feature=+avx` (exit code: 0xc0000005, STATUS_ACCESS_VIOLATION)
There's nothing more I did to reproduce it. However, just like with the broken starship installation, it seems somewhat sporadic - about 1 out of 10 times the compilation succeeds.
Meta:
rustc --version --verbose:
rustc 1.46.0-nightly (50fc24d8a 2020-06-25)
binary: rustc
commit-hash: 50fc24d8a172a853b5dfe40702d6550e3b8562ba
commit-date: 2020-06-25
host: x86_64-pc-windows-msvc
release: 1.46.0-nightly
LLVM version: 10.0
lld-link --version:
LLD 10.0.0
cat ~/.cargo/config:
[build]
rustflags = [
"-Clinker-flavor=lld-link",
"-Ctarget-feature=+avx"
]
I'm also using the latest Visual Studio Build Tools, if that's relevant.
I'll investigate with WinDbg later today and report back.
Does not reproduce with windows-gnu on 2700X with:
[build]
rustflags = [
"-Clink-arg=-fuse-ld=lld",
"-Ctarget-feature=+avx"
]
LLVM 10 from MSYS2
@rustbot modify labels: -O-windows +O-windows-msvc
Also reproduces on a different system with a Intel i7-7820HQ for me with the same reproduction steps as above.
@sivadeilra Here is the WinDbg output and the stack trace. I used the rustc command specified in the cargo error log.
Command output
Microsoft (R) Windows Debugger Version 10.0.19528.1000 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
CommandLine: rustc --crate-name build_script_build --edition=2018 C:\Users\Chris\.cargo\registry\src\github.com-1ecc6299db9ec823\sd-0.7.5\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C opt-level=3 -Cembed-bitcode=no -C codegen-units=1 -C metadata=d011dbc6f5f1cce2 -C extra-filename=-d011dbc6f5f1cce2 --out-dir C:\Users\Chris\AppData\Local\Temp\cargo-installl0X1hR\release\build\sd-d011dbc6f5f1cce2 -L dependency=C:\Users\Chris\AppData\Local\Temp\cargo-installl0X1hR\release\deps --extern man=C:\Users\Chris\AppData\Local\Temp\cargo-installl0X1hR\release\deps\libman-b99848b80d918758.rlib --extern structopt=C:\Users\Chris\AppData\Local\Temp\cargo-installl0X1hR\release\deps\libstructopt-ee882b02652d4990.rlib --cap-lints allow -Clinker-flavor=lld-link -Ctarget-feature=+avx
Starting directory: C:\Users\Chris
************* Path validation summary **************
Response Time (ms) Location
Deferred srv*
Symbol search path is: srv*
Executable search path is:
ModLoad: 00007ff7`02ce0000 00007ff7`03521000 rustup_init.exe
ModLoad: 00007ff9`406a0000 00007ff9`40890000 ntdll.dll
ModLoad: 00007ff9`3feb0000 00007ff9`3ff62000 C:\WINDOWS\System32\KERNEL32.DLL
ModLoad: 00007ff9`3d990000 00007ff9`3dc34000 C:\WINDOWS\System32\KERNELBASE.dll
************* Path validation summary **************
Response Time (ms) Location
Deferred srv*
Symbol search path is: srv*
Executable search path is:
ModLoad: 00007ff7`faf00000 00007ff7`fafe0000 conhost.exe
ModLoad: 00007ff9`406a0000 00007ff9`40890000 ntdll.dll
ModLoad: 00007ff9`3feb0000 00007ff9`3ff62000 C:\WINDOWS\System32\KERNEL32.DLL
ModLoad: 00007ff9`3d990000 00007ff9`3dc34000 C:\WINDOWS\System32\KERNELBASE.dll
ModLoad: 00007ff9`3d8f0000 00007ff9`3d98e000 C:\WINDOWS\System32\msvcp_win.dll
ModLoad: 00007ff9`3d7f0000 00007ff9`3d8ea000 C:\WINDOWS\System32\ucrtbase.dll
ModLoad: 00007ff9`3e7f0000 00007ff9`3e899000 C:\WINDOWS\System32\shcore.dll
ModLoad: 00007ff9`3e8a0000 00007ff9`3e93e000 C:\WINDOWS\System32\msvcrt.dll
ModLoad: 00007ff9`3f4c0000 00007ff9`3f5e0000 C:\WINDOWS\System32\RPCRT4.dll
ModLoad: 00007ff9`3f7b0000 00007ff9`3fae5000 C:\WINDOWS\System32\combase.dll
ModLoad: 00007ff9`3d690000 00007ff9`3d710000 C:\WINDOWS\System32\bcryptPrimitives.dll
ModLoad: 00007ff9`3edb0000 00007ff9`3ee53000 C:\WINDOWS\System32\advapi32.dll
ModLoad: 00007ff9`3e940000 00007ff9`3e9d7000 C:\WINDOWS\System32\sechost.dll
(36d0.2008): Break instruction exception - code 80000003 (first chance)
ntdll!LdrpDoDebuggerBreak+0x30:
00007ff9`4077119c cc int 3
1:001> g
ModLoad: 00007ff9`3faf0000 00007ff9`3fc84000 C:\WINDOWS\System32\user32.dll
ModLoad: 00007ff9`3dcb0000 00007ff9`3dcd1000 C:\WINDOWS\System32\win32u.dll
ModLoad: 00007ff9`3e750000 00007ff9`3e776000 C:\WINDOWS\System32\GDI32.dll
ModLoad: 00007ff9`3de30000 00007ff9`3dfc5000 C:\WINDOWS\System32\gdi32full.dll
ModLoad: 00007ff9`3ef90000 00007ff9`3efbe000 C:\WINDOWS\System32\IMM32.DLL
ModLoad: 00007ff9`3ff70000 00007ff9`40656000 C:\WINDOWS\System32\shell32.dll
ModLoad: 00007ff9`3dc40000 00007ff9`3dc8a000 C:\WINDOWS\System32\cfgmgr32.dll
ModLoad: 00007ff9`3dfd0000 00007ff9`3e750000 C:\WINDOWS\System32\windows.storage.dll
ModLoad: 00007ff9`3d5c0000 00007ff9`3d5e3000 C:\WINDOWS\System32\profapi.dll
ModLoad: 00007ff9`3d570000 00007ff9`3d5ba000 C:\WINDOWS\System32\powrprof.dll
ModLoad: 00007ff9`3d560000 00007ff9`3d570000 C:\WINDOWS\System32\UMPDC.dll
ModLoad: 00007ff9`3ecc0000 00007ff9`3ed12000 C:\WINDOWS\System32\shlwapi.dll
ModLoad: 00007ff9`3d5f0000 00007ff9`3d601000 C:\WINDOWS\System32\kernel.appcore.dll
ModLoad: 00007ff9`3dc90000 00007ff9`3dca7000 C:\WINDOWS\System32\cryptsp.dll
ModLoad: 00007ff9`3b380000 00007ff9`3b419000 C:\WINDOWS\system32\uxtheme.dll
onecore\windows\core\console\open\src\interactivity\win32\systemconfigurationprovider.cpp(179)\conhost.exe!00007FF7FAF056B5: (caller: 00007FF7FAF060C3) LogHr(1) tid(2a94) 80004005 Unbekannter Fehler
onecore\windows\core\console\open\src\renderer\gdi\state.cpp(245)\conhost.exe!00007FF7FAF15477: (caller: 00007FF7FAF13FF7) LogHr(2) tid(5b4c) 80004005 Unbekannter Fehler
ModLoad: 00007ff9`3fc90000 00007ff9`3fdc5000 C:\WINDOWS\System32\MSCTF.dll
ModLoad: 00007ff9`3ee60000 00007ff9`3ef25000 C:\WINDOWS\System32\OLEAUT32.dll
ModLoad: 00007ff9`28fb0000 00007ff9`29234000 C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.18362.900_none_e6beb9d913147d17\comctl32.DLL
ModLoad: 00007ff9`3b8e0000 00007ff9`3b90d000 C:\WINDOWS\SYSTEM32\dwmapi.dll
ModLoad: 00007ff9`2a7e0000 00007ff9`2a87e000 C:\WINDOWS\System32\TextInputFramework.dll
ModLoad: 00007ff9`37490000 00007ff9`377ba000 C:\WINDOWS\System32\CoreUIComponents.dll
ModLoad: 00007ff9`39d80000 00007ff9`39e54000 C:\WINDOWS\System32\CoreMessaging.dll
ModLoad: 00007ff9`3c580000 00007ff9`3c5b1000 C:\WINDOWS\SYSTEM32\ntmarta.dll
ModLoad: 00007ff9`3a230000 00007ff9`3a383000 C:\WINDOWS\SYSTEM32\wintypes.dll
ModLoad: 00000183`50180000 00000183`502d3000 C:\WINDOWS\SYSTEM32\wintypes.dll
ModLoad: 00000183`502e0000 00000183`50433000 C:\WINDOWS\SYSTEM32\wintypes.dll
ModLoad: 00007ff9`2db40000 00007ff9`2dde6000 C:\WINDOWS\System32\iertutil.dll
ModLoad: 00007ff9`3e9e0000 00007ff9`3ea82000 C:\WINDOWS\System32\clbcatq.dll
ModLoad: 00007ff9`3edb0000 00007ff9`3ee53000 C:\WINDOWS\System32\ADVAPI32.dll
ModLoad: 00007ff9`3e8a0000 00007ff9`3e93e000 C:\WINDOWS\System32\msvcrt.dll
ModLoad: 00007ff9`3e940000 00007ff9`3e9d7000 C:\WINDOWS\System32\sechost.dll
ModLoad: 00007ff9`3f4c0000 00007ff9`3f5e0000 C:\WINDOWS\System32\RPCRT4.dll
ModLoad: 00007ff9`3ea90000 00007ff9`3ebe7000 C:\WINDOWS\System32\ole32.dll
ModLoad: 00007ff9`3f7b0000 00007ff9`3fae5000 C:\WINDOWS\System32\combase.dll
ModLoad: 00007ff9`3d7f0000 00007ff9`3d8ea000 C:\WINDOWS\System32\ucrtbase.dll
ModLoad: 00007ff9`3d690000 00007ff9`3d710000 C:\WINDOWS\System32\bcryptPrimitives.dll
ModLoad: 00007ff9`3e750000 00007ff9`3e776000 C:\WINDOWS\System32\GDI32.dll
ModLoad: 00007ff9`3dcb0000 00007ff9`3dcd1000 C:\WINDOWS\System32\win32u.dll
ModLoad: 00007ff9`3de30000 00007ff9`3dfc5000 C:\WINDOWS\System32\gdi32full.dll
ModLoad: 00007ff9`3d8f0000 00007ff9`3d98e000 C:\WINDOWS\System32\msvcp_win.dll
ModLoad: 00007ff9`3faf0000 00007ff9`3fc84000 C:\WINDOWS\System32\USER32.dll
ModLoad: 00007ff9`3ee60000 00007ff9`3ef25000 C:\WINDOWS\System32\OLEAUT32.dll
ModLoad: 00007ff9`3ed30000 00007ff9`3ed9f000 C:\WINDOWS\System32\WS2_32.dll
ModLoad: 00007ff9`3dce0000 00007ff9`3de29000 C:\WINDOWS\System32\CRYPT32.dll
ModLoad: 00007ff9`3d610000 00007ff9`3d622000 C:\WINDOWS\System32\MSASN1.dll
ModLoad: 00007ff9`3ff70000 00007ff9`40656000 C:\WINDOWS\System32\SHELL32.dll
ModLoad: 00007ff9`3dc40000 00007ff9`3dc8a000 C:\WINDOWS\System32\cfgmgr32.dll
ModLoad: 00007ff9`2c260000 00007ff9`2c26c000 C:\WINDOWS\SYSTEM32\Secur32.dll
ModLoad: 00007ff9`3e7f0000 00007ff9`3e899000 C:\WINDOWS\System32\shcore.dll
ModLoad: 00007ff9`3dfd0000 00007ff9`3e750000 C:\WINDOWS\System32\windows.storage.dll
ModLoad: 00007ff9`3d5c0000 00007ff9`3d5e3000 C:\WINDOWS\System32\profapi.dll
ModLoad: 00007ff9`3d570000 00007ff9`3d5ba000 C:\WINDOWS\System32\powrprof.dll
ModLoad: 00007ff9`3d560000 00007ff9`3d570000 C:\WINDOWS\System32\UMPDC.dll
ModLoad: 00007ff9`3ecc0000 00007ff9`3ed12000 C:\WINDOWS\System32\shlwapi.dll
ModLoad: 00007ff9`3d5f0000 00007ff9`3d601000 C:\WINDOWS\System32\kernel.appcore.dll
ModLoad: 00007ff9`3dc90000 00007ff9`3dca7000 C:\WINDOWS\System32\cryptsp.dll
ModLoad: 00007ff9`3d450000 00007ff9`3d475000 C:\WINDOWS\SYSTEM32\USERENV.dll
ModLoad: 00007ff9`3cf00000 00007ff9`3cf0c000 C:\WINDOWS\SYSTEM32\CRYPTBASE.DLL
ModLoad: 00007ff9`3d480000 00007ff9`3d4af000 C:\WINDOWS\SYSTEM32\SSPICLI.DLL
(66c.5e8c): Break instruction exception - code 80000003 (first chance)
ntdll!LdrpDoDebuggerBreak+0x30:
00007ff9`4077119c cc int 3
0:000> g
ModLoad: 00007ff9`3ef90000 00007ff9`3efbe000 C:\WINDOWS\System32\IMM32.DLL
************* Path validation summary **************
Response Time (ms) Location
Deferred srv*
Symbol search path is: srv*
Executable search path is:
ModLoad: 00007ff6`75120000 00007ff6`7513b000 rustc_binary-cf2345702275a4fd.exe
ModLoad: 00007ff9`406a0000 00007ff9`40890000 ntdll.dll
ModLoad: 00007ff9`3feb0000 00007ff9`3ff62000 C:\WINDOWS\System32\KERNEL32.DLL
ModLoad: 00007ff9`3d990000 00007ff9`3dc34000 C:\WINDOWS\System32\KERNELBASE.dll
ModLoad: 00007ff8`ed8e0000 00007ff8`edbda000 C:\Users\Chris\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\bin\std-36286308a8d35fa4.dll
ModLoad: 00007ff9`3edb0000 00007ff9`3ee53000 C:\WINDOWS\System32\ADVAPI32.dll
ModLoad: 00007ff8`a4b60000 00007ff8`aae2c000 C:\Users\Chris\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\bin\rustc_driver-9cb24e1c020a8fb6.dll
ModLoad: 00007ff9`3eda0000 00007ff9`3eda8000 C:\WINDOWS\System32\PSAPI.DLL
ModLoad: 00007ff9`3e8a0000 00007ff9`3e93e000 C:\WINDOWS\System32\msvcrt.dll
ModLoad: 00007ff9`3ff70000 00007ff9`40656000 C:\WINDOWS\System32\SHELL32.dll
ModLoad: 00007ff9`3e940000 00007ff9`3e9d7000 C:\WINDOWS\System32\sechost.dll
ModLoad: 00007ff9`3d7f0000 00007ff9`3d8ea000 C:\WINDOWS\System32\ucrtbase.dll
ModLoad: 00007ff9`3f4c0000 00007ff9`3f5e0000 C:\WINDOWS\System32\RPCRT4.dll
ModLoad: 00007ff9`3dc40000 00007ff9`3dc8a000 C:\WINDOWS\System32\cfgmgr32.dll
ModLoad: 00007ff9`3ed30000 00007ff9`3ed9f000 C:\WINDOWS\System32\WS2_32.dll
ModLoad: 00007ff9`3e7f0000 00007ff9`3e899000 C:\WINDOWS\System32\shcore.dll
ModLoad: 00007ff9`3f7b0000 00007ff9`3fae5000 C:\WINDOWS\System32\combase.dll
ModLoad: 00007ff9`3d450000 00007ff9`3d475000 C:\WINDOWS\SYSTEM32\USERENV.dll
ModLoad: 00007ff9`3d690000 00007ff9`3d710000 C:\WINDOWS\System32\bcryptPrimitives.dll
ModLoad: 00007ff9`3d5c0000 00007ff9`3d5e3000 C:\WINDOWS\System32\profapi.dll
ModLoad: 00007ff9`3dfd0000 00007ff9`3e750000 C:\WINDOWS\System32\windows.storage.dll
ModLoad: 00007ff9`3d8f0000 00007ff9`3d98e000 C:\WINDOWS\System32\msvcp_win.dll
ModLoad: 00007ff9`3cf00000 00007ff9`3cf0c000 C:\WINDOWS\SYSTEM32\CRYPTBASE.DLL
ModLoad: 00007ff9`3d570000 00007ff9`3d5ba000 C:\WINDOWS\System32\powrprof.dll
ModLoad: 00007ff9`3d560000 00007ff9`3d570000 C:\WINDOWS\System32\UMPDC.dll
ModLoad: 00007ff9`3ecc0000 00007ff9`3ed12000 C:\WINDOWS\System32\shlwapi.dll
ModLoad: 00007ff9`3e750000 00007ff9`3e776000 C:\WINDOWS\System32\GDI32.dll
ModLoad: 00007ff9`3dcb0000 00007ff9`3dcd1000 C:\WINDOWS\System32\win32u.dll
ModLoad: 00007ff9`3de30000 00007ff9`3dfc5000 C:\WINDOWS\System32\gdi32full.dll
ModLoad: 00007ff9`3faf0000 00007ff9`3fc84000 C:\WINDOWS\System32\USER32.dll
ModLoad: 00007ff9`3d5f0000 00007ff9`3d601000 C:\WINDOWS\System32\kernel.appcore.dll
ModLoad: 00007ff9`3dc90000 00007ff9`3dca7000 C:\WINDOWS\System32\cryptsp.dll
ModLoad: 00007ff9`3ea90000 00007ff9`3ebe7000 C:\WINDOWS\System32\ole32.dll
ModLoad: 00007ff9`3ee60000 00007ff9`3ef25000 C:\WINDOWS\System32\OLEAUT32.dll
(2430.6038): Break instruction exception - code 80000003 (first chance)
ntdll!LdrpDoDebuggerBreak+0x30:
00007ff9`4077119c cc int 3
2:011> g
ModLoad: 00007ff9`3ef90000 00007ff9`3efbe000 C:\WINDOWS\System32\IMM32.DLL
ModLoad: 00007ff8`eba80000 00007ff8`ebcae000 \\?\C:\Users\Chris\AppData\Local\Temp\cargo-installl0X1hR\release\deps\structopt_derive-9f1d169c48bf0bb3.dll
ModLoad: 00007ff9`2c240000 00007ff9`2c256000 C:\WINDOWS\SYSTEM32\VCRUNTIME140.dll
(2430.5afc): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
*** WARNING: Unable to verify checksum for \\?\C:\Users\Chris\AppData\Local\Temp\cargo-installl0X1hR\release\deps\structopt_derive-9f1d169c48bf0bb3.dll
structopt_derive_9f1d169c48bf0bb3!_rust_realloc+0x3fe:
00007ff8`ebae654e c5fc288120000000 vmovaps ymm0,ymmword ptr [rcx+20h] ds:000002c8`178b5db0=00
2:015> u @rip
structopt_derive_9f1d169c48bf0bb3!_rust_realloc+0x3fe:
00007ff8`ebae654e c5fc288120000000 vmovaps ymm0,ymmword ptr [rcx+20h]
00007ff8`ebae6556 4883b92000000000 cmp qword ptr [rcx+20h],0
00007ff8`ebae655e c5fc280d3af21100 vmovaps ymm1,ymmword ptr [structopt_derive_9f1d169c48bf0bb3!_ymm (00007ff8`ebc057a0)]
00007ff8`ebae6566 488b8130000000 mov rax,qword ptr [rcx+30h]
00007ff8`ebae656d c5fc298920000000 vmovaps ymmword ptr [rcx+20h],ymm1
00007ff8`ebae6575 c5fc11442428 vmovups ymmword ptr [rsp+28h],ymm0
00007ff8`ebae657b c5f8288140000000 vmovaps xmm0,xmmword ptr [rcx+40h]
00007ff8`ebae6583 c5f811442448 vmovups xmmword ptr [rsp+48h],xmm0
2:015>
Stack trace
[0x0] structopt_derive_9f1d169c48bf0bb3!_rust_realloc + 0x3fe
[0x1] structopt_derive_9f1d169c48bf0bb3!ZN16proc_macro_error5dummy9set_dummy17h1e5992d6979082c0E + 0xa4
[0x2] structopt_derive_9f1d169c48bf0bb3!ZN244_$LT$std..error..$LT$impl$u20$core..convert..From$LT$alloc..string..String$GT$$u20$for$u20$alloc..boxed..Box$LT$dyn$u20$std..error..Error$u2b$core..marker..Sync$u2b$core..marker..Send$GT$$GT$..from..StringError$u20$as$u20$core..fmt..Display$GT$3fmt17heb7072f126dc0b2bE + 0x29858
[0x3] structopt_derive_9f1d169c48bf0bb3!ZN244_$LT$std..error..$LT$impl$u20$core..convert..From$LT$alloc..string..String$GT$$u20$for$u20$alloc..boxed..Box$LT$dyn$u20$std..error..Error$u2b$core..marker..Sync$u2b$core..marker..Send$GT$$GT$..from..StringError$u20$as$u20$core..fmt..Display$GT$3fmt17heb7072f126dc0b2bE + 0x2c386
[0x4] structopt_derive_9f1d169c48bf0bb3!ZN126_$LT$quote..__private..HasIterator$u20$as$u20$core..ops..bit..BitOr$LT$quote..__private..ThereIsNoIteratorInRepetition$GT$$GT$5bitor17h4d816340f770489aE + 0xffffffffffffad75
[0x5] structopt_derive_9f1d169c48bf0bb3!ZN126_$LT$quote..__private..HasIterator$u20$as$u20$core..ops..bit..BitOr$LT$quote..__private..ThereIsNoIteratorInRepetition$GT$$GT$5bitor17h4d816340f770489aE + 0xffffffffffffba3d
[0x6] rustc_driver_9cb24e1c020a8fb6!ZN77_$LT$rustc_expand..proc_macro_server..Literal$u20$as$u20$core..fmt..Debug$GT$3fmt17hf461a0b363b6ae6bE + 0x2b29
[0x7] rustc_driver_9cb24e1c020a8fb6!ZN99_$LT$rustc_expand..proc_macro..ProcMacroDerive$u20$as$u20$rustc_expand..base..MultiItemModifier$GT$6expand17h6af2be386c2379dcE + 0x218
[0x8] rustc_driver_9cb24e1c020a8fb6!ZN12rustc_expand6expand13MacroExpander21fully_expand_fragment17h94dfea398ba7337cE + 0xe23
[0x9] rustc_driver_9cb24e1c020a8fb6!ZN12rustc_expand6expand13MacroExpander12expand_crate17h922c621c04c28cdeE + 0x771
[0xa] rustc_driver_9cb24e1c020a8fb6!ZN95_$LT$rustc_interface..util..ReplaceBodyWithLoop$u20$as$u20$rustc_ast..mut_visit..MutVisitor$GT$9visit_mac17h9a215cc3c7eaed21E + 0x3d925
[0xb] rustc_driver_9cb24e1c020a8fb6!ZN15rustc_interface6passes13BoxedResolver19to_resolver_outputs17had819ccb417da138E + 0x7ff
[0xc] rustc_driver_9cb24e1c020a8fb6!ZN95_$LT$rustc_interface..util..ReplaceBodyWithLoop$u20$as$u20$rustc_ast..mut_visit..MutVisitor$GT$9visit_mac17h9a215cc3c7eaed21E + 0x5f6b7
[0xd] rustc_driver_9cb24e1c020a8fb6!ZN95_$LT$rustc_interface..util..ReplaceBodyWithLoop$u20$as$u20$rustc_ast..mut_visit..MutVisitor$GT$9visit_mac17h9a215cc3c7eaed21E + 0x4d876
[0xe] rustc_driver_9cb24e1c020a8fb6!ZN15rustc_interface7queries7Queries9expansion17hfa39941031a651e2E + 0x52a
[0xf] rustc_driver_9cb24e1c020a8fb6!ZN104_$LT$rustc_metadata..foreign_modules..Collector$u20$as$u20$rustc_hir..itemlikevisit..ItemLikeVisitor$GT$15visit_impl_item17hac3f9e9d30adf8a3E + 0x14e3ec
[0x10] rustc_driver_9cb24e1c020a8fb6!ZN62_$LT$rustc_driver..args..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h89937b97eaab9a16E + 0xf0e
[0x11] rustc_driver_9cb24e1c020a8fb6!ZN70_$LT$rustc_driver..DEFAULT_HOOK$u20$as$u20$core..ops..deref..Deref$GT$5deref17h8297b8690d51cce5E + 0x1412d
[0x12] rustc_driver_9cb24e1c020a8fb6!ZN52_$LT$i32$u20$as$u20$petgraph..matrix_graph..Zero$GT$4zero17hd68e191f7c98155bE + 0x1303
[0x13] std_36286308a8d35fa4!ZN3std3sys7windows6thread6Thread3new17h9c6ccf8206794202E + 0x1ca
[0x14] KERNEL32!BaseThreadInitThunk + 0x14
[0x15] ntdll!RtlUserThreadStart + 0x21
Additionally the WinDbg output and the stack trace of running a miscompiled starship executable:
Command output
Microsoft (R) Windows Debugger Version 10.0.19528.1000 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
CommandLine: starship prompt
Starting directory: C:\Users\Chris
************* Path validation summary **************
Response Time (ms) Location
Deferred srv*
Symbol search path is: srv*
Executable search path is:
ModLoad: 00007ff6`8c790000 00007ff6`8cc34000 starship-70f20c3ed1a6265e.exe
ModLoad: 00007ff9`406a0000 00007ff9`40890000 ntdll.dll
ModLoad: 00007ff9`3feb0000 00007ff9`3ff62000 C:\WINDOWS\System32\KERNEL32.DLL
ModLoad: 00007ff9`3d990000 00007ff9`3dc34000 C:\WINDOWS\System32\KERNELBASE.dll
************* Path validation summary **************
Response Time (ms) Location
Deferred srv*
Symbol search path is: srv*
Executable search path is:
ModLoad: 00007ff7`faf00000 00007ff7`fafe0000 conhost.exe
ModLoad: 00007ff9`406a0000 00007ff9`40890000 ntdll.dll
ModLoad: 00007ff9`3feb0000 00007ff9`3ff62000 C:\WINDOWS\System32\KERNEL32.DLL
ModLoad: 00007ff9`3d990000 00007ff9`3dc34000 C:\WINDOWS\System32\KERNELBASE.dll
ModLoad: 00007ff9`3d8f0000 00007ff9`3d98e000 C:\WINDOWS\System32\msvcp_win.dll
ModLoad: 00007ff9`3d7f0000 00007ff9`3d8ea000 C:\WINDOWS\System32\ucrtbase.dll
ModLoad: 00007ff9`3e7f0000 00007ff9`3e899000 C:\WINDOWS\System32\shcore.dll
ModLoad: 00007ff9`3e8a0000 00007ff9`3e93e000 C:\WINDOWS\System32\msvcrt.dll
ModLoad: 00007ff9`3f4c0000 00007ff9`3f5e0000 C:\WINDOWS\System32\RPCRT4.dll
ModLoad: 00007ff9`3f7b0000 00007ff9`3fae5000 C:\WINDOWS\System32\combase.dll
ModLoad: 00007ff9`3d690000 00007ff9`3d710000 C:\WINDOWS\System32\bcryptPrimitives.dll
ModLoad: 00007ff9`3edb0000 00007ff9`3ee53000 C:\WINDOWS\System32\advapi32.dll
ModLoad: 00007ff9`3e940000 00007ff9`3e9d7000 C:\WINDOWS\System32\sechost.dll
(6304.61e4): Break instruction exception - code 80000003 (first chance)
ntdll!LdrpDoDebuggerBreak+0x30:
00007ff9`4077119c cc int 3
1:001> g
ModLoad: 00007ff9`3faf0000 00007ff9`3fc84000 C:\WINDOWS\System32\user32.dll
ModLoad: 00007ff9`3dcb0000 00007ff9`3dcd1000 C:\WINDOWS\System32\win32u.dll
ModLoad: 00007ff9`3e750000 00007ff9`3e776000 C:\WINDOWS\System32\GDI32.dll
ModLoad: 00007ff9`3de30000 00007ff9`3dfc5000 C:\WINDOWS\System32\gdi32full.dll
ModLoad: 00007ff9`3ef90000 00007ff9`3efbe000 C:\WINDOWS\System32\IMM32.DLL
ModLoad: 00007ff9`3ff70000 00007ff9`40656000 C:\WINDOWS\System32\shell32.dll
ModLoad: 00007ff9`3dc40000 00007ff9`3dc8a000 C:\WINDOWS\System32\cfgmgr32.dll
ModLoad: 00007ff9`3dfd0000 00007ff9`3e750000 C:\WINDOWS\System32\windows.storage.dll
ModLoad: 00007ff9`3d5c0000 00007ff9`3d5e3000 C:\WINDOWS\System32\profapi.dll
ModLoad: 00007ff9`3d570000 00007ff9`3d5ba000 C:\WINDOWS\System32\powrprof.dll
ModLoad: 00007ff9`3d560000 00007ff9`3d570000 C:\WINDOWS\System32\UMPDC.dll
ModLoad: 00007ff9`3ecc0000 00007ff9`3ed12000 C:\WINDOWS\System32\shlwapi.dll
ModLoad: 00007ff9`3d5f0000 00007ff9`3d601000 C:\WINDOWS\System32\kernel.appcore.dll
ModLoad: 00007ff9`3dc90000 00007ff9`3dca7000 C:\WINDOWS\System32\cryptsp.dll
ModLoad: 00007ff9`3b380000 00007ff9`3b419000 C:\WINDOWS\system32\uxtheme.dll
onecore\windows\core\console\open\src\interactivity\win32\systemconfigurationprovider.cpp(179)\conhost.exe!00007FF7FAF056B5: (caller: 00007FF7FAF060C3) LogHr(1) tid(62d8) 80004005 Unbekannter Fehler
onecore\windows\core\console\open\src\renderer\gdi\state.cpp(245)\conhost.exe!00007FF7FAF15477: (caller: 00007FF7FAF13FF7) LogHr(2) tid(52f8) 80004005 Unbekannter Fehler
ModLoad: 00007ff9`3fc90000 00007ff9`3fdc5000 C:\WINDOWS\System32\MSCTF.dll
ModLoad: 00007ff9`3ee60000 00007ff9`3ef25000 C:\WINDOWS\System32\OLEAUT32.dll
ModLoad: 00007ff9`28fb0000 00007ff9`29234000 C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.18362.900_none_e6beb9d913147d17\comctl32.DLL
ModLoad: 00007ff9`3b8e0000 00007ff9`3b90d000 C:\WINDOWS\SYSTEM32\dwmapi.dll
ModLoad: 00007ff9`2a7e0000 00007ff9`2a87e000 C:\WINDOWS\System32\TextInputFramework.dll
ModLoad: 00007ff9`39d80000 00007ff9`39e54000 C:\WINDOWS\System32\CoreMessaging.dll
ModLoad: 00007ff9`37490000 00007ff9`377ba000 C:\WINDOWS\System32\CoreUIComponents.dll
ModLoad: 00007ff9`3c580000 00007ff9`3c5b1000 C:\WINDOWS\SYSTEM32\ntmarta.dll
ModLoad: 00007ff9`3a230000 00007ff9`3a383000 C:\WINDOWS\SYSTEM32\wintypes.dll
ModLoad: 000001f0`9bac0000 000001f0`9bc13000 C:\WINDOWS\SYSTEM32\wintypes.dll
ModLoad: 00007ff9`2db40000 00007ff9`2dde6000 C:\WINDOWS\System32\iertutil.dll
ModLoad: 00007ff9`3e9e0000 00007ff9`3ea82000 C:\WINDOWS\System32\clbcatq.dll
ModLoad: 00007ff9`3ea90000 00007ff9`3ebe7000 C:\WINDOWS\System32\ole32.dll
ModLoad: 00007ff9`3f7b0000 00007ff9`3fae5000 C:\WINDOWS\System32\combase.dll
ModLoad: 00007ff9`3d7f0000 00007ff9`3d8ea000 C:\WINDOWS\System32\ucrtbase.dll
ModLoad: 00007ff9`3f4c0000 00007ff9`3f5e0000 C:\WINDOWS\System32\RPCRT4.dll
ModLoad: 00007ff9`3d690000 00007ff9`3d710000 C:\WINDOWS\System32\bcryptPrimitives.dll
ModLoad: 00007ff9`3edb0000 00007ff9`3ee53000 C:\WINDOWS\System32\advapi32.dll
ModLoad: 00007ff9`3e8a0000 00007ff9`3e93e000 C:\WINDOWS\System32\msvcrt.dll
ModLoad: 00007ff9`3e940000 00007ff9`3e9d7000 C:\WINDOWS\System32\sechost.dll
ModLoad: 00007ff9`3e750000 00007ff9`3e776000 C:\WINDOWS\System32\GDI32.dll
ModLoad: 00007ff9`3dcb0000 00007ff9`3dcd1000 C:\WINDOWS\System32\win32u.dll
ModLoad: 00007ff9`3de30000 00007ff9`3dfc5000 C:\WINDOWS\System32\gdi32full.dll
ModLoad: 00007ff9`3d8f0000 00007ff9`3d98e000 C:\WINDOWS\System32\msvcp_win.dll
ModLoad: 00007ff9`3faf0000 00007ff9`3fc84000 C:\WINDOWS\System32\USER32.dll
ModLoad: 00007ff9`3dce0000 00007ff9`3de29000 C:\WINDOWS\System32\CRYPT32.dll
ModLoad: 00007ff9`3d610000 00007ff9`3d622000 C:\WINDOWS\System32\MSASN1.dll
ModLoad: 00007ff9`3ee60000 00007ff9`3ef25000 C:\WINDOWS\System32\OLEAUT32.dll
ModLoad: 00007ff9`3d570000 00007ff9`3d5ba000 C:\WINDOWS\System32\POWRPROF.dll
ModLoad: 00007ff9`29270000 00007ff9`29287000 C:\WINDOWS\SYSTEM32\NETAPI32.dll
ModLoad: 00007ff9`3caa0000 00007ff9`3cada000 C:\WINDOWS\SYSTEM32\IPHLPAPI.DLL
ModLoad: 00007ff9`3d560000 00007ff9`3d570000 C:\WINDOWS\System32\UMPDC.dll
ModLoad: 00007ff9`27e30000 00007ff9`27e78000 C:\WINDOWS\SYSTEM32\pdh.dll
ModLoad: 00007ff9`3eda0000 00007ff9`3eda8000 C:\WINDOWS\System32\PSAPI.DLL
ModLoad: 00007ff9`2c260000 00007ff9`2c26c000 C:\WINDOWS\SYSTEM32\Secur32.dll
ModLoad: 00007ff9`3f050000 00007ff9`3f4c0000 C:\WINDOWS\System32\SETUPAPI.dll
ModLoad: 00007ff9`3dc40000 00007ff9`3dc8a000 C:\WINDOWS\System32\cfgmgr32.dll
ModLoad: 00007ff9`3d710000 00007ff9`3d736000 C:\WINDOWS\System32\bcrypt.dll
ModLoad: 00007ff9`3ff70000 00007ff9`40656000 C:\WINDOWS\System32\SHELL32.dll
ModLoad: 00007ff9`3e7f0000 00007ff9`3e899000 C:\WINDOWS\System32\shcore.dll
ModLoad: 00007ff9`3dfd0000 00007ff9`3e750000 C:\WINDOWS\System32\windows.storage.dll
ModLoad: 00007ff9`3d5c0000 00007ff9`3d5e3000 C:\WINDOWS\System32\profapi.dll
ModLoad: 00007ff9`3ecc0000 00007ff9`3ed12000 C:\WINDOWS\System32\shlwapi.dll
ModLoad: 00007ff9`3d5f0000 00007ff9`3d601000 C:\WINDOWS\System32\kernel.appcore.dll
ModLoad: 00007ff9`3dc90000 00007ff9`3dca7000 C:\WINDOWS\System32\cryptsp.dll
ModLoad: 00007ff9`3ed30000 00007ff9`3ed9f000 C:\WINDOWS\System32\WS2_32.dll
ModLoad: 00007ff9`2c240000 00007ff9`2c256000 C:\WINDOWS\SYSTEM32\VCRUNTIME140.dll
ModLoad: 00007ff9`3cf00000 00007ff9`3cf0c000 C:\WINDOWS\SYSTEM32\CRYPTBASE.DLL
ModLoad: 00007ff9`3cbb0000 00007ff9`3cbbc000 C:\WINDOWS\SYSTEM32\NETUTILS.DLL
ModLoad: 00007ff9`362f0000 00007ff9`36308000 C:\WINDOWS\SYSTEM32\SAMCLI.DLL
ModLoad: 00007ff9`3d480000 00007ff9`3d4af000 C:\WINDOWS\SYSTEM32\SSPICLI.DLL
(5cc4.5ddc): Break instruction exception - code 80000003 (first chance)
ntdll!LdrpDoDebuggerBreak+0x30:
00007ff9`4077119c cc int 3
0:000> g
ModLoad: 00007ff9`3ef90000 00007ff9`3efbe000 C:\WINDOWS\System32\IMM32.DLL
(5cc4.5ddc): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
*** WARNING: Unable to verify checksum for starship-70f20c3ed1a6265e.exe
starship_70f20c3ed1a6265e!Ordinal0+0x185915:
00007ff6`8c915915 c5fc2888c0000000 vmovaps ymm1,ymmword ptr [rax+0C0h] ds:00000178`afaa49b0=00
0:000> u @rip
starship_70f20c3ed1a6265e!Ordinal0+0x185915:
00007ff6`8c915915 c5fc2888c0000000 vmovaps ymm1,ymmword ptr [rax+0C0h]
00007ff6`8c91591d 488bb0c0000000 mov rsi,qword ptr [rax+0C0h]
00007ff6`8c915924 c5fc2980c0000000 vmovaps ymmword ptr [rax+0C0h],ymm0
00007ff6`8c91592c c5fc294b20 vmovaps ymmword ptr [rbx+20h],ymm1
00007ff6`8c915931 4885f6 test rsi,rsi
00007ff6`8c915934 0f8493000000 je starship_70f20c3ed1a6265e!Ordinal0+0x1859cd (00007ff6`8c9159cd)
00007ff6`8c91593a 488b05876c2f00 mov rax,qword ptr [starship_70f20c3ed1a6265e!git_libgit2_opts+0x141918 (00007ff6`8cc0c5c8)]
00007ff6`8c915941 4883f801 cmp rax,1
0:000>
Stack trace
[0x0] starship_70f20c3ed1a6265e!Ordinal0 + 0x185915
[0x1] starship_70f20c3ed1a6265e!Ordinal0 + 0x2a62
[0x2] starship_70f20c3ed1a6265e!Ordinal0 + 0x26972
[0x3] starship_70f20c3ed1a6265e!Ordinal0 + 0x972fc
[0x4] starship_70f20c3ed1a6265e!Ordinal0 + 0xa5a62
[0x5] starship_70f20c3ed1a6265e!Ordinal0 + 0x227136
[0x6] starship_70f20c3ed1a6265e!Ordinal0 + 0xb9605
[0x7] starship_70f20c3ed1a6265e!git_libgit2_opts + 0x76c
[0x8] KERNEL32!BaseThreadInitThunk + 0x14
[0x9] ntdll!RtlUserThreadStart + 0x21
Looks like it's reading a value from TLS and adding an offset to use as a pointer that is not 32-byte aligned (0x000002104d54ced0):
00007ffd`9ac9dfdb 8b0517321700 mov eax, dword ptr [structopt_derive_afd65372c61b620b!_tls_index (00007ffd`9ae111f8)]
00007ffd`9ac9dfe1 65488b0c2558000000 mov rcx, qword ptr gs:[58h]
00007ffd`9ac9dfea 488b0cc1 mov rcx, qword ptr [rcx+rax*8]
00007ffd`9ac9dfee c5fc288120000000 vmovaps ymm0, ymmword ptr [rcx+20h] ds:00000210`4d54ced0=00
00007ffd`9ac9dff6 4883b92000000000 cmp qword ptr [rcx+20h], 0
00007ffd`9ac9dffe c5fc280d5a051100 vmovaps ymm1, ymmword ptr [structopt_derive_afd65372c61b620b!_ymm (00007ffd`9adae560)]
00007ffd`9ac9e006 488b8130000000 mov rax, qword ptr [rcx+30h]
This is happening in the proc_macro_error::dummy::set_dummy call which tries to read/write a thread local:
thread_local! {
static DUMMY_IMPL: RefCell<Option<TokenStream>> = RefCell::new(None);
}
LLVM seems to believe it should be 32 byte aligned, but as far as I can tell when ntdll is allocating the TLS slots they're 16 byte aligned
@_ZN16proc_macro_error5dummy10DUMMY_IMPL7__getit5__KEY17h4a7e8c80e38ac6e5E = internal thread_local global <{ [64 x i8] }> zeroinitializer, align 32
Sounds like a similar issue to https://github.com/rust-lang/rust/issues/44056
When built with lld-link there's no alignment specified for the TLS section in the DLL:
Dump of file structopt_derive-afd65372c61b620b.dll
File Type: DLL
Section contains the following TLS directory:
0000000180229000 Start of raw data
0000000180229148 End of raw data
00000001801E11F8 Address of index
000000018019C3B0 Address of callbacks
0 Size of zero fill
00000000 Characteristics
(no align specified)
But using the default msvc linker instead results in the correct alignment:
Dump of file structopt_derive-afd65372c61b620b.dll
File Type: DLL
Section contains the following TLS directory:
000000018019D960 Start of raw data
000000018019DAA8 End of raw data
00000001801E2278 Address of index
000000018017D248 Address of callbacks
0 Size of zero fill
00600000 Characteristics
32 byte align
Seems like an LLD bug?
Ah, that's great that you've found what appears to be the root cause.
Are you / have you opened an issue for lld?
Is there more support needed from Windows devs?
I filed a bug: https://bugs.llvm.org/show_bug.cgi?id=46473
Finally got around to digging into LLD. Fix at https://reviews.llvm.org/D88637
@luqmana
I'm not sure, does this address the case of enabled AVX-512, where alignment should be even larger (64 byte instead of 32)?
@petrochenkov Yes, it does. When the loader (ntdll) encounters a module (exe/dll) using TLS, it looks up the TLS directory in the PE image and uses the alignment specified there for _all_ TLS data in the module. So my patch just makes LLD save the max alignment of all .tls sections it encounters in the final binary.
So that means as long as you're annotating your thread_local's with the right alignment then it will work fine, i.e. using __m512 which is align(64).
In terms of allowed values, it's powers of 2 up to 8192 bytes with 16 as the default if unspecified.
Most helpful comment
I filed a bug: https://bugs.llvm.org/show_bug.cgi?id=46473