-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Closed
Labels
ASanAddress SanitizerAddress SanitizerbugSomething isn't workingSomething isn't workingfixedSomething works now, yay!Something works now, yay!
Description
Might be related to: #3164
Initializing std::vector + std::pmr::monotonic_buffer_resource causes ASAN to throw an exception in x86 mode under certain conditions.
The following code shows this, but unfortunately I was unable to add ASAN to MSVC in compiler explorer, so instead GCC x86 and x64 were added to show there's no problem there.
https://godbolt.org/z/sM931fbP3
https://godbolt.org/z/vbzEa4cba
The code from the first link for posterity's sake:
#include <array>
#include <iostream>
#include <memory_resource>
#include <vector>
int main()
{
using T = std::pmr::vector<std::uint8_t>;
std::array<std::uint8_t, 8192> buffer{};
std::pmr::monotonic_buffer_resource mbr(buffer.data(), buffer.size(),
std::pmr::null_memory_resource());
T vec1(128, &mbr);
T vec2(128, &mbr);
std::cout << "So far so good\n";
T vec3(100, &mbr);
T vec4(128, &mbr); // <-- asan throws exception here
std::cout << "All good\n";
}
Visual Studio 2022 versions:
- v17.4.0, various preview versions (preview 2.1, preview 6)
- v17.5.0
Notable compiler settings / flags
- Debug mode
- x86 (NOT x64)
- C++17 / C++20
- Address sanitizer enabled (/fsanitize=address)
NB: ASAN would only thow an exception in x86 mode + Visual Studio 2022. I was unable to reproduce the issue with Visual Studio 2019, neither x86 nor x64 (I don't have a VS2019 version number at hand, but it was quite recent).
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
ASanAddress SanitizerAddress SanitizerbugSomething isn't workingSomething isn't workingfixedSomething works now, yay!Something works now, yay!