[libcxx] r271459 - Remove enable_shared_from_this test since it leaks the control block and fails with ASAN
Eric Fiselier via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 1 19:00:46 PDT 2016
No the leak was my fault. The sneaky line was "std::shared_ptr<T> s(ptr,
&nullDeleter);", which caused the allocation of a shared control block.
Since the deleter is a NOP it gets leaked and ASAN reports it.
I'm going to follow up with a better test that ASAN doesn't complain about.
On Wed, Jun 1, 2016 at 7:49 PM, Arthur O'Dwyer <arthur.j.odwyer at gmail.com>
wrote:
> I don't get it. If this code doesn't pass ASAN, or if it leaks anything,
> doesn't that indicate a bug in the library implementation of C++1z
> shared_ptr? I can't find where this code does anything sneaky that a
> sanitizer ought to care about...
> On Jun 1, 2016 6:15 PM, "Eric Fiselier via cfe-commits" <
> cfe-commits at lists.llvm.org> wrote:
>
>> Author: ericwf
>> Date: Wed Jun 1 20:09:12 2016
>> New Revision: 271459
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=271459&view=rev
>> Log:
>> Remove enable_shared_from_this test since it leaks the control block and
>> fails with ASAN
>>
>> Modified:
>>
>> libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.enab/enable_shared_from_this.pass.cpp
>>
>> Modified:
>> libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.enab/enable_shared_from_this.pass.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.enab/enable_shared_from_this.pass.cpp?rev=271459&r1=271458&r2=271459&view=diff
>>
>> ==============================================================================
>> ---
>> libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.enab/enable_shared_from_this.pass.cpp
>> (original)
>> +++
>> libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.enab/enable_shared_from_this.pass.cpp
>> Wed Jun 1 20:09:12 2016
>> @@ -88,32 +88,6 @@ int main()
>> }
>> #endif
>> }
>> - // Test LWG issue 2529 again. This time check that an expired pointer
>> - // is replaced.
>> - {
>> - T* ptr = new T;
>> - std::weak_ptr<T> weak;
>> - {
>> - std::shared_ptr<T> s(ptr, &nullDeleter);
>> - assert(ptr->shared_from_this() == s);
>> - weak = s;
>> - assert(!weak.expired());
>> - }
>> - assert(weak.expired());
>> - weak.reset();
>> -#ifndef TEST_HAS_NO_EXCEPTIONS
>> - try {
>> - ptr->shared_from_this();
>> - assert(false);
>> - } catch (std::bad_weak_ptr const&) {
>> - } catch (...) { assert(false); }
>> -#endif
>> - {
>> - std::shared_ptr<T> s2(ptr, &nullDeleter);
>> - assert(ptr->shared_from_this() == s2);
>> - }
>> - delete ptr;
>> - }
>> // Test weak_from_this_methods
>> #if TEST_STD_VER > 14
>> {
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160601/6366e376/attachment.html>
More information about the cfe-commits
mailing list