Open croepha opened 2 years ago
clang version 13.0.0 Target: x86_64-pc-windows-msvc Thread model: posix InstalledDir: C:\Program Files\LLVM\bin
@croepha Do you still experience this with newer versions of Clang?
@llvm/issue-subscribers-debuginfo
Yes, I can repro
Note, that due to this issue: https://discourse.llvm.org/t/address-sanitizer-issues-on-windows/4991
I have to employ a workaround
>del bug.exe bug.obj
>c:\Users\dave\Downloads\LLVM-17.0.1-win64\bin\clang-cl.exe -v /fsanitize=address /Zi bug.cpp /c /o bug.obj
clang version 17.0.1
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: c:\Users\dave\Downloads\LLVM-17.0.1-win64\bin
(in-process)
"c:\\Users\\dave\\Downloads\\LLVM-17.0.1-win64\\bin\\clang-cl.exe" -cc1 -triple x86_64-pc-windows-msvc19.33.31630 -emit-obj -mrelax-all -mincremental-linker-compatible -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name bug.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=none -relaxed-aliasing -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -mllvm -x86-asm-syntax=intel -tune-cpu generic -D_MT -flto-visibility-public-std --dependent-lib=libcmt --dependent-lib=oldnames -stack-protector 2 -fms-volatile -fdiagnostics-format msvc -gno-column-info -gcodeview -debug-info-kind=constructor -v "-fcoverage-compilation-dir=c:\\projects\\hello-world\\cro-build-2023" -resource-dir "c:\\Users\\dave\\Downloads\\LLVM-17.0.1-win64\\lib\\clang\\17" -internal-isystem "c:\\Users\\dave\\Downloads\\LLVM-17.0.1-win64\\lib\\clang\\17\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.33.31629\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.33.31629\\ATLMFC\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\VS\\include" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.22000.0\\ucrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\um" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\shared" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\winrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\cppwinrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\include\\um" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.33.31629\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.33.31629\\ATLMFC\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\VS\\include" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.22000.0\\ucrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\um" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\shared" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\winrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\cppwinrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\include\\um" -fdeprecated-macro "-fdebug-compilation-dir=c:\\projects\\hello-world\\cro-build-2023" -ferror-limit 19 -fmessage-length=120 -fsanitize=address "-fsanitize-system-ignorelist=c:\\Users\\dave\\Downloads\\LLVM-17.0.1-win64\\lib\\clang\\17\\share\\asan_ignorelist.txt" -fno-sanitize-memory-param-retval -fsanitize-address-use-after-scope -fsanitize-address-globals-dead-stripping -fno-sanitize-address-use-odr-indicator -fno-assume-sane-operator-new -fno-use-cxa-atexit -fms-extensions -fms-compatibility -fms-compatibility-version=19.33.31630 -std=c++14 -fdelayed-template-parsing -fcolor-diagnostics -faddrsig "-object-file-name=c:\\projects\\hello-world\\cro-build-2023\\bug.obj" -o bug.obj -x c++ bug.cpp
clang -cc1 version 17.0.1 based upon LLVM 17.0.1 default target x86_64-pc-windows-msvc
ignoring duplicate directory "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.33.31629\include"
ignoring duplicate directory "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.33.31629\ATLMFC\include"
ignoring duplicate directory "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include"
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt"
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um"
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared"
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt"
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt"
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um"
#include "..." search starts here:
#include <...> search starts here:
c:\Users\dave\Downloads\LLVM-17.0.1-win64\lib\clang\17\include
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.33.31629\include
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.33.31629\ATLMFC\include
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include
C:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt
C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um
C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared
C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt
C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt
C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um
End of search list.
>c:\Users\dave\Downloads\LLVM-17.0.1-win64\bin\clang-cl.exe -v -fuse-ld=lld /Zi "%VCToolsInstallDir%\lib\x64\clang_rt.asan_cxx-x86_64.lib" "%VCToolsInstallDir%\lib\x64\clang_rt.asan-x86_64.lib" bug.obj /Fe:bug.exe
clang version 17.0.1
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: c:\Users\dave\Downloads\LLVM-17.0.1-win64\bin
"c:\\Users\\dave\\Downloads\\LLVM-17.0.1-win64\\bin\\lld-link" -out:bug.exe "-libpath:c:\\Users\\dave\\Downloads\\LLVM-17.0.1-win64\\lib\\clang\\17\\lib\\windows" -nologo -debug "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.33.31629\\\\lib\\x64\\clang_rt.asan_cxx-x86_64.lib" "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.33.31629\\\\lib\\x64\\clang_rt.asan-x86_64.lib" bug.obj
See, it says that structvar is undefined
Alternatively, without address sanitizer we get this:
>c:\Users\dave\Downloads\LLVM-17.0.1-win64\bin\clang-cl.exe -v -fuse-ld=lld /Zi bug.cpp /o bug.exe
clang version 17.0.1
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: c:\Users\dave\Downloads\LLVM-17.0.1-win64\bin
"c:\\Users\\dave\\Downloads\\LLVM-17.0.1-win64\\bin\\clang-cl.exe" -cc1 -triple x86_64-pc-windows-msvc19.33.31630 -emit-obj -mrelax-all -mincremental-linker-compatible -dumpdir bug.exe- -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name bug.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=none -relaxed-aliasing -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -mllvm -x86-asm-syntax=intel -tune-cpu generic -D_MT -flto-visibility-public-std --dependent-lib=libcmt --dependent-lib=oldnames -stack-protector 2 -fms-volatile -fdiagnostics-format msvc -gno-column-info -gcodeview -debug-info-kind=constructor -v "-fcoverage-compilation-dir=c:\\projects\\hello-world\\cro-build-2023" -resource-dir "c:\\Users\\dave\\Downloads\\LLVM-17.0.1-win64\\lib\\clang\\17" -internal-isystem "c:\\Users\\dave\\Downloads\\LLVM-17.0.1-win64\\lib\\clang\\17\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.33.31629\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.33.31629\\ATLMFC\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\VS\\include" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.22000.0\\ucrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\um" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\shared" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\winrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\cppwinrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\include\\um" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.33.31629\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.33.31629\\ATLMFC\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\VS\\include" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.22000.0\\ucrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\um" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\shared" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\winrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\cppwinrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\include\\um" -fdeprecated-macro "-fdebug-compilation-dir=c:\\projects\\hello-world\\cro-build-2023" -ferror-limit 19 -fmessage-length=120 -fno-use-cxa-atexit -fms-extensions -fms-compatibility -fms-compatibility-version=19.33.31630 -std=c++14 -fdelayed-template-parsing -fcolor-diagnostics -faddrsig "-object-file-name=C:\\Users\\dave\\AppData\\Local\\Temp\\bug-937cdb.obj" -o "C:\\Users\\dave\\AppData\\Local\\Temp\\bug-937cdb.obj" -x c++ bug.cpp
clang -cc1 version 17.0.1 based upon LLVM 17.0.1 default target x86_64-pc-windows-msvc
ignoring duplicate directory "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.33.31629\include"
ignoring duplicate directory "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.33.31629\ATLMFC\include"
ignoring duplicate directory "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include"
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt"
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um"
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared"
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt"
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt"
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um"
#include "..." search starts here:
#include <...> search starts here:
c:\Users\dave\Downloads\LLVM-17.0.1-win64\lib\clang\17\include
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.33.31629\include
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.33.31629\ATLMFC\include
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include
C:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt
C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um
C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared
C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt
C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt
C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um
End of search list.
"c:\\Users\\dave\\Downloads\\LLVM-17.0.1-win64\\bin\\lld-link" -out:bug.exe "-libpath:c:\\Users\\dave\\Downloads\\LLVM-17.0.1-win64\\lib\\clang\\17\\lib\\windows" -nologo -debug "C:\\Users\\dave\\AppData\\Local\\Temp\\bug-937cdb.obj"
See, we can inspect structvar now
Here is a simple program:
if you compile with
clang-cl.exe -v /MD /fsanitize=address /Zi test.cpp /o build/test.debug.exe
and if you step through it with a debugger, like MSVC/devenv then you can only inspect the variable
normalvar
and notstructvar
If you however compile with
clang-cl.exe -v /MD /Zi test.cpp /o build/test.debug.exe
(without ASAN) then you can inspect bothnormalvar
andstructvar