I can reproduce this. The error happens in the call to __alloc_traits::construct inside of vector<_Tp, _Allocator>::insert(const_iterator __position, _InputIterator __first, _InputIterator __last)
That insert method does not seem to call __RAII_IncreaseAnnotator. Anna. On Friday, June 19, 2015 at 5:17:56 PM UTC-7, Alexey Samsonov wrote: > > +Kuba, Anna > > in case they have any ideas, or are able to reproduce it under Apple Clang. > > On Thu, Jun 18, 2015 at 9:37 AM, Stefan Haller <[email protected] > <javascript:>> wrote: > >> I'm getting a container overflow failure that I think is a false >> positive; but I don't understand what's going on, so I'm posting here >> instead of filing an issue. Here's the most stripped-down example that I >> could come up with: >> >> #include <vector> >> #include <boost/range/any_range.hpp> >> >> template <typename T> >> using AnyRange = >> boost::any_range<T, >> boost::random_access_traversal_tag, >> T, >> std::ptrdiff_t>; >> >> int main(int argc, const char * argv[]) >> { >> std::vector<int> v{1, 2, 3}; >> v.erase(v.begin() + 1); >> int i = 42; >> AnyRange<int> range{&i, &i + 1}; >> v.insert(v.begin() + 1, boost::begin(range), boost::end(range)); >> assert(v[0] == 1); >> assert(v[1] == 42); >> assert(v[2] == 3); >> return 0; >> } >> >> This triggers the container overflow error inside the insert call, when >> it tries to copy-construct the int at v.end(), which is inside the >> allocated memory of the vector. >> >> Replacing the insert line with >> >> v.insert(v.begin() + 1, &i, &i + 1); >> >> makes it work. Also, changing the Reference argument of the any_range >> (third template argument) to "T&" or "const T&" also makes it work. And >> of course, running the test without AddressSanitizer succeeds, so it >> doesn't look like it's actually overwriting memory. >> >> I tested this with boost 1.55 and 1.56. I'm on Mac OS X 10.10, with >> clang++ version "Apple LLVM version 7.0.0 (clang-700.0.53)", x86_64. >> AddressSanitizer is the one that comes bundled with the Xcode 7 beta >> (not sure how to find out which version or revision that is). >> >> Any idea what's going on? >> >> Thanks, Stefan. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "address-sanitizer" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > Alexey Samsonov, Mountain View, CA > -- You received this message because you are subscribed to the Google Groups "address-sanitizer" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
