http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58822
Bug ID: 58822 Summary: Segfault when calling make_shared Product: gcc Version: 4.8.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: michi at triodia dot com I have a constructor calling make_shared to pass a shared_ptr to a base class. InvalidArgumentException::InvalidArgumentException(string const& reason) // : Exception(shared_ptr<ExceptionImplBase>(new ExceptionImplBase(this, "unity::InvalidArgumentException", reason))) : Exception(make_shared<ExceptionImplBase>(this, "unity::InvalidArgumentException", reason)) { } When I run this, I get a segfault (stack trace below). If I create the shared_ptr explicitly (see the commented-out line) instead of calling make_shared, things work fine. For what it's worth, if I use clang 4.3 instead, things work as expected in both cases. I would have thought that, no matter what else might be going on, a call to make_shared<T>(args) should always be equivalent to a call to shared_ptr<T>(new T(args)), but that's not what I'm seeing. I tried reproducing this with a simple example, but no joy. Before I spend a lot of time trying to pare this down to a stand-alone test case (this is in a large code base), are there any known issues that could be causing this? gdb stack trace below, as well as output from valgrind. Thanks, Michi. #0 0x000000000041c986 in __gnu_cxx::new_allocator<unity::ExceptionImplBase>::construct<unity::ExceptionImplBase<unity::InvalidArgumentException* const, char const (&) [32], std::string const&> > (this=0x7fffffffd6ef, __p=0x665388) at /usr/include/c++/4.8/ext/new_allocator.h:120 #1 0x000000000041c93d in std::allocator_traits<std::allocator<unity::ExceptionImplBase> >::_S_construct<unity::ExceptionImplBase<unity::InvalidArgumentException* const, char const (&) [32], std::string const&> >(std::allocator<unity::ExceptionImplBase>&, std::allocator_traits<std::allocator<unity::ExceptionImplBase> >::__construct_helper*, (unity::ExceptionImplBase<unity::InvalidArgumentException* const, char const (&) [32], std::string const&>&&)...) (__a=..., __p=0x665388) at /usr/include/c++/4.8/bits/alloc_traits.h:254 #2 0x000000000041c8d2 in std::allocator_traits<std::allocator<unity::ExceptionImplBase> >::construct<unity::ExceptionImplBase<unity::InvalidArgumentException* const, char const (&) [32], std::string const&> >(std::allocator<unity::ExceptionImplBase>&, unity::ExceptionImplBase<unity::InvalidArgumentException* const, char const (&) [32], std::string const&>*, (unity::ExceptionImplBase<unity::InvalidArgumentException* const, char const (&) [32], std::string const&>&&)...) ( __a=..., __p=0x665388) at /usr/include/c++/4.8/bits/alloc_traits.h:393 #3 0x000000000041c7ec in std::_Sp_counted_ptr_inplace<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (this=0x665370, __a=...) at /usr/include/c++/4.8/bits/shared_ptr_base.h:399 #4 0x000000000041c681 in __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, (__gnu_cxx::_Lock_policy)2> >::construct<std::_Sp_counted_ptr_inplace<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, (__gnu_cxx::_Lock_policy)2><std::allocator<unity::ExceptionImplBase> const, unity::InvalidArgumentException* const, char const (&) [32], std::string const&> > (this=0x7fffffffd827, __p=0x665370) at /usr/include/c++/4.8/ext/new_allocator.h:120 #5 0x000000000041c599 in std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, (__gnu_cxx::_Lock_policy)2> > >::_S_construct<std::_Sp_counted_ptr_inplace<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, (__gnu_cxx::_Lock_policy)2><std::allocator<unity::ExceptionImplBase> const, unity::InvalidArgumentException* const, char const (&) [32], std::string const&> >(std::allocator<std::_Sp_counted_ptr_inplace<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, (__gnu_cxx::_Lock_policy)2> >&, std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, (__gnu_cxx::_Lock_policy)2> > >::__construct_helper*, (std::_Sp_counted_ptr_inplace<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, (__gnu_cxx::_Lock_policy)2><std::allocator<unity::ExceptionImplBase> const, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>&&)...) (__a=..., __p=0x665370) at /usr/include/c++/4.8/bits/alloc_traits.h:254 #6 0x000000000041c488 in std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, (__gnu_cxx::_Lock_policy)2> > >::construct<std::_Sp_counted_ptr_inplace<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, (__gnu_cxx::_Lock_policy)2><std::allocator<unity::ExceptionImplBase> const, unity::InvalidArgumentException* const, char const (&) [32], std::string const&> >(std::allocator<std::_Sp_counted_ptr_inplace<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, (__gnu_cxx::_Lock_policy)2> >&, std::_Sp_counted_ptr_inplace<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, (__gnu_cxx::_Lock_policy)2><std::allocator<unity::ExceptionImplBase> const, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>*, (std::_Sp_counted_ptr_inplace<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, (__gnu_cxx::_Lock_policy)2><std::allocator<unity::ExceptionImplBase> const, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>&&)...) (__a=..., __p=0x665370) at /usr/include/c++/4.8/bits/alloc_traits.h:393 #7 0x000000000041c33f in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::_Sp_make_shared_tag, unity::ExceptionImplBase*, std::allocator<unity::ExceptionImplBase> const&, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (this=0x7fffffffda28, __a=...) at /usr/include/c++/4.8/bits/shared_ptr_base.h:522 #8 0x000000000041c16f in std::__shared_ptr<unity::ExceptionImplBase, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::_Sp_make_shared_tag, std::allocator<unity::ExceptionImplBase> const&, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (this=0x7fffffffda20, __tag=..., __a=...) at /usr/include/c++/4.8/bits/shared_ptr_base.h:986 #9 0x000000000041bdd8 in std::shared_ptr<unity::ExceptionImplBase>::shared_ptr<std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::_Sp_make_shared_tag, std::allocator<unity::ExceptionImplBase> const&, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (this=0x7fffffffda20, __tag=..., __a=...) at /usr/include/c++/4.8/bits/shared_ptr.h:316 #10 0x000000000041b8aa in std::allocate_shared<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::allocator<unity::ExceptionImplBase> const&, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (__a=...) at /usr/include/c++/4.8/bits/shared_ptr.h:598 #11 0x000000000041b539 in std::make_shared<unity::ExceptionImplBase, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) () at /usr/include/c++/4.8/bits/shared_ptr.h:614 #12 0x0000000000419283 in unity::InvalidArgumentException::InvalidArgumentException (this=0x6652a0, reason=..., __in_chrg=<optimised out>, __vtt_parm=<optimised out>) at /home/michi/src/exception-fix/src/unity/UnityExceptions.cpp:29 #13 0x0000000000413748 in b () at /home/michi/src/exception-fix/test/gtest/unity/Exceptions_test.cpp:98 Valgrind: ==24622== Use of uninitialised value of size 8 ==24622== at 0x41C986: _ZN9__gnu_cxx13new_allocatorIN5unity17ExceptionImplBaseEE9constructIS2_IKPNS1_24InvalidArgumentExceptionERA32_KcRKSsEEEvPT_DpOT0_ (in /home/michi/src/exception-fix/build/test/gtest/unity/Exceptions_test) ==24622== by 0x41C93C: _ZNSt16allocator_traitsISaIN5unity17ExceptionImplBaseEEE12_S_constructIS1_IKPNS0_24InvalidArgumentExceptionERA32_KcRKSsEEENSt9enable_ifIXsrNS3_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS2_PSF_DpOSG_ (alloc_traits.h:254) ==24622== by 0x41C8D1: _ZNSt16allocator_traitsISaIN5unity17ExceptionImplBaseEEE9constructIS1_IKPNS0_24InvalidArgumentExceptionERA32_KcRKSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOSD_ (alloc_traits.h:393) ==24622== by 0x41C7EB: std::_Sp_counted_ptr_inplace<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (shared_ptr_base.h:399) ==24622== by 0x41C680: _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceIN5unity17ExceptionImplBaseESaIS3_ELNS_12_Lock_policyE2EEE9constructIS6_IKS4_KPNS2_24InvalidArgumentExceptionERA32_KcRKSsEEEvPT_DpOT0_ (in /home/michi/src/exception-fix/build/test/gtest/unity/Exceptions_test) ==24622== by 0x41C598: _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceIN5unity17ExceptionImplBaseESaIS2_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructIS6_IKS3_KPNS1_24InvalidArgumentExceptionERA32_KcRKSsEEENSt9enable_ifIXsrNS8_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS7_PSL_DpOSM_ (alloc_traits.h:254) ==24622== by 0x41C487: _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceIN5unity17ExceptionImplBaseESaIS2_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructIS6_IKS3_KPNS1_24InvalidArgumentExceptionERA32_KcRKSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS7_PT_DpOSJ_ (alloc_traits.h:393) ==24622== by 0x41C33E: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::_Sp_make_shared_tag, unity::ExceptionImplBase*, std::allocator<unity::ExceptionImplBase> const&, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (shared_ptr_base.h:522) ==24622== by 0x41C16E: std::__shared_ptr<unity::ExceptionImplBase, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::_Sp_make_shared_tag, std::allocator<unity::ExceptionImplBase> const&, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (shared_ptr_base.h:986) ==24622== by 0x41BDD7: std::shared_ptr<unity::ExceptionImplBase>::shared_ptr<std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::_Sp_make_shared_tag, std::allocator<unity::ExceptionImplBase> const&, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (shared_ptr.h:316) ==24622== by 0x41B8A9: std::shared_ptr<unity::ExceptionImplBase> std::allocate_shared<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::allocator<unity::ExceptionImplBase> const&, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (shared_ptr.h:598) ==24622== by 0x41B538: std::shared_ptr<unity::ExceptionImplBase> std::make_shared<unity::ExceptionImplBase, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (shared_ptr.h:614) ==24622== ==24622== Invalid read of size 8 ==24622== at 0x41C986: _ZN9__gnu_cxx13new_allocatorIN5unity17ExceptionImplBaseEE9constructIS2_IKPNS1_24InvalidArgumentExceptionERA32_KcRKSsEEEvPT_DpOT0_ (in /home/michi/src/exception-fix/build/test/gtest/unity/Exceptions_test) ==24622== by 0x41C93C: _ZNSt16allocator_traitsISaIN5unity17ExceptionImplBaseEEE12_S_constructIS1_IKPNS0_24InvalidArgumentExceptionERA32_KcRKSsEEENSt9enable_ifIXsrNS3_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS2_PSF_DpOSG_ (alloc_traits.h:254) ==24622== by 0x41C8D1: _ZNSt16allocator_traitsISaIN5unity17ExceptionImplBaseEEE9constructIS1_IKPNS0_24InvalidArgumentExceptionERA32_KcRKSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOSD_ (alloc_traits.h:393) ==24622== by 0x41C7EB: std::_Sp_counted_ptr_inplace<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (shared_ptr_base.h:399) ==24622== by 0x41C680: _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceIN5unity17ExceptionImplBaseESaIS3_ELNS_12_Lock_policyE2EEE9constructIS6_IKS4_KPNS2_24InvalidArgumentExceptionERA32_KcRKSsEEEvPT_DpOT0_ (in /home/michi/src/exception-fix/build/test/gtest/unity/Exceptions_test) ==24622== by 0x41C598: _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceIN5unity17ExceptionImplBaseESaIS2_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructIS6_IKS3_KPNS1_24InvalidArgumentExceptionERA32_KcRKSsEEENSt9enable_ifIXsrNS8_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS7_PSL_DpOSM_ (alloc_traits.h:254) ==24622== by 0x41C487: _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceIN5unity17ExceptionImplBaseESaIS2_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructIS6_IKS3_KPNS1_24InvalidArgumentExceptionERA32_KcRKSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS7_PT_DpOSJ_ (alloc_traits.h:393) ==24622== by 0x41C33E: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::_Sp_make_shared_tag, unity::ExceptionImplBase*, std::allocator<unity::ExceptionImplBase> const&, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (shared_ptr_base.h:522) ==24622== by 0x41C16E: std::__shared_ptr<unity::ExceptionImplBase, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::_Sp_make_shared_tag, std::allocator<unity::ExceptionImplBase> const&, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (shared_ptr_base.h:986) ==24622== by 0x41BDD7: std::shared_ptr<unity::ExceptionImplBase>::shared_ptr<std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::_Sp_make_shared_tag, std::allocator<unity::ExceptionImplBase> const&, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (shared_ptr.h:316) ==24622== by 0x41B8A9: std::shared_ptr<unity::ExceptionImplBase> std::allocate_shared<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::allocator<unity::ExceptionImplBase> const&, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (shared_ptr.h:598) ==24622== by 0x41B538: std::shared_ptr<unity::ExceptionImplBase> std::make_shared<unity::ExceptionImplBase, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (shared_ptr.h:614) ==24622== Address 0xffffffffffffffe8 is not stack'd, malloc'd or (recently) free'd ==24622== ==24622== ==24622== Process terminating with default action of signal 11 (SIGSEGV) ==24622== Access not within mapped region at address 0xFFFFFFFFFFFFFFE8 ==24622== at 0x41C986: _ZN9__gnu_cxx13new_allocatorIN5unity17ExceptionImplBaseEE9constructIS2_IKPNS1_24InvalidArgumentExceptionERA32_KcRKSsEEEvPT_DpOT0_ (in /home/michi/src/exception-fix/build/test/gtest/unity/Exceptions_test) ==24622== by 0x41C93C: _ZNSt16allocator_traitsISaIN5unity17ExceptionImplBaseEEE12_S_constructIS1_IKPNS0_24InvalidArgumentExceptionERA32_KcRKSsEEENSt9enable_ifIXsrNS3_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS2_PSF_DpOSG_ (alloc_traits.h:254) ==24622== by 0x41C8D1: _ZNSt16allocator_traitsISaIN5unity17ExceptionImplBaseEEE9constructIS1_IKPNS0_24InvalidArgumentExceptionERA32_KcRKSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOSD_ (alloc_traits.h:393) ==24622== by 0x41C7EB: std::_Sp_counted_ptr_inplace<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (shared_ptr_base.h:399) ==24622== by 0x41C680: _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceIN5unity17ExceptionImplBaseESaIS3_ELNS_12_Lock_policyE2EEE9constructIS6_IKS4_KPNS2_24InvalidArgumentExceptionERA32_KcRKSsEEEvPT_DpOT0_ (in /home/michi/src/exception-fix/build/test/gtest/unity/Exceptions_test) ==24622== by 0x41C598: _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceIN5unity17ExceptionImplBaseESaIS2_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructIS6_IKS3_KPNS1_24InvalidArgumentExceptionERA32_KcRKSsEEENSt9enable_ifIXsrNS8_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS7_PSL_DpOSM_ (alloc_traits.h:254) ==24622== by 0x41C487: _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceIN5unity17ExceptionImplBaseESaIS2_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructIS6_IKS3_KPNS1_24InvalidArgumentExceptionERA32_KcRKSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS7_PT_DpOSJ_ (alloc_traits.h:393) ==24622== by 0x41C33E: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::_Sp_make_shared_tag, unity::ExceptionImplBase*, std::allocator<unity::ExceptionImplBase> const&, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (shared_ptr_base.h:522) ==24622== by 0x41C16E: std::__shared_ptr<unity::ExceptionImplBase, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::_Sp_make_shared_tag, std::allocator<unity::ExceptionImplBase> const&, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (shared_ptr_base.h:986) ==24622== by 0x41BDD7: std::shared_ptr<unity::ExceptionImplBase>::shared_ptr<std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::_Sp_make_shared_tag, std::allocator<unity::ExceptionImplBase> const&, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (shared_ptr.h:316) ==24622== by 0x41B8A9: std::shared_ptr<unity::ExceptionImplBase> std::allocate_shared<unity::ExceptionImplBase, std::allocator<unity::ExceptionImplBase>, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(std::allocator<unity::ExceptionImplBase> const&, unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (shared_ptr.h:598) ==24622== by 0x41B538: std::shared_ptr<unity::ExceptionImplBase> std::make_shared<unity::ExceptionImplBase, unity::InvalidArgumentException* const, char const (&) [32], std::string const&>(unity::InvalidArgumentException* const&&, char const (&) [32], std::string const&) (shared_ptr.h:614)