-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hit errors when build ROOT with msvc on AddressSanitizer mode #9445
Comments
Here are the errors I got when following your receipe:
|
@wmyyy so I can't build with ASAN on Windows (see errors above). But it's weird that you don't have the same errors. And about the "The items cannot be built in parallel.", it's fine, it's only an informative message |
Hi @bellenot, Thanks |
@wmyyy Good point. I'll try and let you know |
@wmyyy I just checked and I have the "C++ Address Sanitizer" component in Visual studio. |
Hi @bellenot, Thanks |
Still no luck, even when adding
I still have the following error:
I'll investigate more. And BTW, I see that:
and then
So you compile in release mode and link in debug mode? Really? |
Hi bellenot, link option /debug creates debugging information for the executable. And this option is not really required, you can ignore it. |
OK, back to this. For the record, the working syntax (for me) is:
And at the end of the build I got:
So not the same error with VS 2022 (64 bit). Will try in Debug mode and let you know. And since the errors are different between VS 2019 and 2022, I suspect an incompatibility between LLVM/Clang and Visual Studio. We'll see how it goes after the LLVM upgrade. |
So I can reproduce the error in 32 bit mode. But the 64 bit mode fails as previously reported. Le's see how it goes after the LLVM upgrade. |
Hi @bellenot . LLVM is now at version 16: is this still an issue? Can it be closed? |
I'll try |
So it still fails with LLVM 16 |
Back to this. I got sanitizer errors with ROOT master, like for example:
Now I don't know how to fix those errors, but at least they look like real sanitizer output... |
The |
@pcanal cool, thanks for the info! Now I have to find how to prevent the build to fail because of this... |
Maybe Visual Studio has something like https://clang.llvm.org/docs/SanitizerSpecialCaseList.html |
I found how to disable the sanitizer with
|
I think the 'hack' is fine and appropriate since one of the thing we can do after this testing is check for double deletes! So when the sanitizer is on, it does not really hurt to mark this feature as disabled. |
On Windows, even `__declspec(no_sanitize_address)` does not prevent the `heap-use-after-free` errors when using the `/fsanitize=address` compiler flag, so don't even try. Fixes root-project#9445
* [win][ASAN] Fix ASAN build on Windows On Windows, even `__declspec(no_sanitize_address)` does not prevent the `heap-use-after-free` errors when using the `/fsanitize=address` compiler flag, so don't even try. Fixes #9445 * [scope] clang-format
@wmyyy BTW, see also this commit |
Describe the bug
Hi All,
I have follow below steps to build root project with msvc on AddressSanitizer mode, but hit below errors. And I have seen "WARNING "Address sanitizer builds only tested with gcc and Clang" on CMakeLists. So I am not sure if root support asan mode with msvc. Could you please help have a look and confirm it? Thanks a lot!
(The error message shows "The items cannot be built in parallel." but I have tried build single parallel still hit this error)
Error:
To Reproduce
git clone https://github.com/root-project/root.git root_src
mkdir root_build && cd root_build
cmake -G"Visual Studio 16 2019" -A Win32 -Dtesting=ON -Droottest=ON ../root_src
set _CL_= /fsanitize=address /GS- /wd5072 & set _LINK_= /InferASanLibs /incremental:no /debug
(please make sure use _ _ to inclose CL and LINK, since _ _ will style text Italic here )set ASAN_OPTIONS=detect_odr_violation=0
cmake --build . --config Release
Setup
The text was updated successfully, but these errors were encountered: