Skip to content

Allow system tests to start with address sanitizer enabled

After #1373 (closed), we now want to be able to spawn a CTA instance without it crashing. This means fixing any memory leaks that might occur before the instance starts.

So far, cta-objectstore-initialize is leaking preventing us from even getting to the CTA chart deployment:

=================================================================
==145==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x7fd453b58367 in operator new(unsigned long) (/lib64/libasan.so.6+0xb6367)
    #1 0x7fd4536e54fb in cta::objectstore::BackendVFS::getParams() (/lib64/libctaobjectstore.so.0+0x8554fb)
    #2 0x424902 in main (/usr/bin/cta-objectstore-initialize+0x424902)
    #3 0x7fd4505ab58f in __libc_start_call_main (/lib64/libc.so.6+0x2958f)

Indirect leak of 31 byte(s) in 1 object(s) allocated from:
    #0 0x7fd453b58367 in operator new(unsigned long) (/lib64/libasan.so.6+0xb6367)
    #1 0x43a6ea in __gnu_cxx::new_allocator<char>::allocate(unsigned long, void const*) (/usr/bin/cta-objectstore-initialize+0x43a6ea)
    #2 0x433038 in std::allocator_traits<std::allocator<char> >::allocate(std::allocator<char>&, unsigned long) (/usr/bin/cta-objectstore-initialize+0x433038)
    #3 0x439ae2 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned long&, unsigned long) (/usr/bin/cta-objectstore-initialize+0x439ae2)
    #4 0x437c7c in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (/usr/bin/cta-objectstore-initialize+0x437c7c)
    #5 0x43334b in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (/usr/bin/cta-objectstore-initialize+0x43334b)
    #6 0x431915 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (/usr/bin/cta-objectstore-initialize+0x431915)
    #7 0x7fd4536e553b in cta::objectstore::BackendVFS::getParams() (/lib64/libctaobjectstore.so.0+0x85553b)
    #8 0x424902 in main (/usr/bin/cta-objectstore-initialize+0x424902)
    #9 0x7fd4505ab58f in __libc_start_call_main (/lib64/libc.so.6+0x2958f)

SUMMARY: AddressSanitizer: 71 byte(s) leaked in 2 allocation(s).

Should be a relatively straightforward fix ™️