linnaea commented on issue #5117:
URL: https://github.com/apache/trafficserver/issues/5117#issuecomment-778644537
This seems like a more run-of-the-mill memory corruption, got SEGV when
packaging but cannot reproduce on my local machine.
However running valgrind locally gives this trace:
```
linnaea@linux-k2lg:~>
LD_LIBRARY_PATH="/var/tmp/build-root/openSUSE_Leap_15.2-x86_64/home/abuild/rpmbuild/BUILD/trafficserver-9.0.0/src/tscore/.libs:/var/tmp/build-root/openSUSE_Leap_15.2-x86_64/home/abuild/rpmbuild/BUILD/trafficserver-9.0.0/src/tscpp/util/.libs:$LD_LIBRARY_PATH"
valgrind
/var/tmp/build-root/openSUSE_Leap_15.2-x86_64/home/abuild/rpmbuild/BUILD/trafficserver-9.0.0/proxy/logging/.libs/test_LogUtils2
==17845== Memcheck, a memory error detector
==17845== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==17845== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==17845== Command:
/var/tmp/build-root/openSUSE_Leap_15.2-x86_64/home/abuild/rpmbuild/BUILD/trafficserver-9.0.0/proxy/logging/.libs/test_LogUtils2
==17845==
===============================================================================
All tests passed (120 assertions in 2 test cases)
==17845== Invalid read of size 8
==17845== at 0x16110F: std::_Rb_tree<std::basic_string_view<char,
std::char_traits<char> >, std::pair<std::basic_string_view<char,
std::char_traits<char> > const, void (*)(ts::BufferWriter&, ts::BWFSpec
const&)>, std::_Select1st<std::pair<std::basic_string_view<char,
std::char_traits<char> > const, void (*)(ts::BufferWriter&, ts::BWFSpec
const&)> >, std::less<std::basic_string_view<char, std::char_traits<char> > >,
std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> >
const, void (*)(ts::BufferWriter&, ts::BWFSpec const&)> >
>::_M_erase(std::_Rb_tree_node<std::pair<std::basic_string_view<char,
std::char_traits<char> > const, void (*)(ts::BufferWriter&, ts::BWFSpec
const&)> >*) (stl_tree.h:1856)
==17845== by 0x5E484A1: __cxa_finalize (in /lib64/libc-2.26.so)
==17845== by 0x4E62F12: ??? (in
/var/tmp/build-root/openSUSE_Leap_15.2-x86_64/home/abuild/rpmbuild/BUILD/trafficserver-9.0.0/src/tscore/.libs/libtscore.so.9.0.0)
==17845== by 0x400FE62: _dl_fini (in /lib64/ld-2.26.so)
==17845== by 0x5E48137: __run_exit_handlers (in /lib64/libc-2.26.so)
==17845== by 0x5E48189: exit (in /lib64/libc-2.26.so)
==17845== by 0x5E30350: (below main) (in /lib64/libc-2.26.so)
==17845== Address 0x7e3bef8 is 24 bytes inside a block of size 56 free'd
==17845== at 0x4C2FA0B: operator delete(void*) (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==17845== by 0x161126: deallocate (new_allocator.h:125)
==17845== by 0x161126: deallocate (alloc_traits.h:462)
==17845== by 0x161126: _M_put_node (stl_tree.h:592)
==17845== by 0x161126: _M_drop_node (stl_tree.h:659)
==17845== by 0x161126: std::_Rb_tree<std::basic_string_view<char,
std::char_traits<char> >, std::pair<std::basic_string_view<char,
std::char_traits<char> > const, void (*)(ts::BufferWriter&, ts::BWFSpec
const&)>, std::_Select1st<std::pair<std::basic_string_view<char,
std::char_traits<char> > const, void (*)(ts::BufferWriter&, ts::BWFSpec
const&)> >, std::less<std::basic_string_view<char, std::char_traits<char> > >,
std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> >
const, void (*)(ts::BufferWriter&, ts::BWFSpec const&)> >
>::_M_erase(std::_Rb_tree_node<std::pair<std::basic_string_view<char,
std::char_traits<char> > const, void (*)(ts::BufferWriter&, ts::BWFSpec
const&)> >*) (stl_tree.h:1858)
==17845== by 0x5E48137: __run_exit_handlers (in /lib64/libc-2.26.so)
==17845== by 0x5E48189: exit (in /lib64/libc-2.26.so)
==17845== by 0x5E30350: (below main) (in /lib64/libc-2.26.so)
==17845== Block was alloc'd at
==17845== at 0x4C2E94F: operator new(unsigned long) (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==17845== by 0x159A12: allocate (new_allocator.h:111)
==17845== by 0x159A12: allocate (alloc_traits.h:436)
==17845== by 0x159A12: _M_get_node (stl_tree.h:588)
==17845== by 0x159A12: _M_create_node<char const (&)[4], void
(*)(ts::BufferWriter&, const ts::BWFSpec&)> (stl_tree.h:642)
==17845== by 0x159A12: _M_emplace_unique<char const (&)[5], void
(*)(ts::BufferWriter&, const ts::BWFSpec&)> (stl_tree.h:2351)
==17845== by 0x159A12: emplace<char const (&)[5], void
(*)(ts::BufferWriter&, const ts::BWFSpec&)> (stl_map.h:569)
==17845== by 0x159A12: operator() (BufferWriterFormat.cc:1019)
==17845== by 0x159A12: __static_initialization_and_destruction_0
(BufferWriterFormat.cc:1024)
==17845== by 0x159A12: _GLOBAL__sub_I__ZN2ts7BWFSpec7DEFAULTE
(BufferWriterFormat.cc:1035)
==17845== by 0x1C93EC: __libc_csu_init (elf-init.c:88)
==17845== by 0x5E302DA: (below main) (in /lib64/libc-2.26.so)
```
And a bunch of other errors when exiting.
Running gdb in the packaging container gives this backtrace:
```
Starting program:
/home/abuild/rpmbuild/BUILD/trafficserver-9.0.0/proxy/logging/.libs/test_LogUtils2
Missing separate debuginfos, use: zypper install
glibc-debuginfo-2.26-lp152.26.3.1.x86_64
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
===============================================================================
All tests passed (120 assertions in 2 test cases)
Program received signal SIGSEGV, Segmentation fault.
std::_Rb_tree<std::basic_string_view<char, std::char_traits<char> >,
std::pair<std::basic_string_view<char, std::char_traits<char> > const, void
(*)(ts::BufferWriter&, ts::BWFSpec const&)>,
std::_Select1st<std::pair<std::basic_string_view<char, std::char_traits<char> >
const, void (*)(ts::BufferWriter&, ts::BWFSpec const&)> >,
std::less<std::basic_string_view<char, std::char_traits<char> > >,
std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> >
const, void (*)(ts::BufferWriter&, ts::BWFSpec const&)> > >::_M_erase
(this=this@entry=0x5555556ea0e0 <ts::bw_fmt::BWF_GLOBAL_TABLE>,
__x=0x4545454545454545) at /usr/include/c++/7/bits/stl_tree.h:1856
1856 _M_erase(_S_right(__x));
Missing separate debuginfos, use: zypper install
libcap2-debuginfo-2.25-lp152.4.115.x86_64
libgcc_s1-debuginfo-10.2.1+git583-lp152.2.2.x86_64
libhwloc15-debuginfo-2.1.0-lp152.2.3.1.x86_64
liblzma5-debuginfo-5.2.3-lp152.5.100.x86_64
libopenssl1_1-debuginfo-1.1.1d-lp152.7.9.1.x86_64
libpciaccess0-debuginfo-0.14-lp152.3.4.x86_64
libpcre1-debuginfo-8.41-lp152.6.104.x86_64
libstdc++6-debuginfo-10.2.1+git583-lp152.2.2.x86_64
libxml2-2-debuginfo-2.9.7-lp152.10.6.1.x86_64
libyaml-cpp0_6-debuginfo-0.6.1-lp152.5.2.1.x86_64
libz1-debuginfo-1.2.11-lp152.8.6.1.x86_64
(gdb) bt
#0 std::_Rb_tree<std::basic_string_view<char, std::char_traits<char> >,
std::pair<std::basic_string_view<char, std::char_traits<char> > const, void
(*)(ts::BufferWriter&, ts::BWFSpec const&)>,
std::_Select1st<std::pair<std::basic_string_view<char, std::char_traits<char> >
const, void (*)(ts::BufferWriter&, ts::BWFSpec const&)> >,
std::less<std::basic_string_view<char, std::char_traits<char> > >,
std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> >
const, void (*)(ts::BufferWriter&, ts::BWFSpec const&)> > >::_M_erase
(this=this@entry=0x5555556ea0e0 <ts::bw_fmt::BWF_GLOBAL_TABLE>,
__x=0x4545454545454545) at /usr/include/c++/7/bits/stl_tree.h:1856
#1 0x000055555545911b in std::_Rb_tree<std::basic_string_view<char,
std::char_traits<char> >, std::pair<std::basic_string_view<char,
std::char_traits<char> > const, void (*)(ts::BufferWriter&, ts::BWFSpec
const&)>, std::_Select1st<std::pair<std::basic_string_view<char,
std::char_traits<char> > const, void (*)(ts::BufferWriter&, ts::BWFSpec
const&)> >, std::less<std::basic_string_view<char, std::char_traits<char> > >,
std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> >
const, void (*)(ts::BufferWriter&, ts::BWFSpec const&)> > >::_M_erase
(this=0x5555556ea0e0 <ts::bw_fmt::BWF_GLOBAL_TABLE>, __x=0x5555557272e0) at
/usr/include/c++/7/bits/stl_tree.h:1856
#2 0x00007ffff6a874a2 in __cxa_finalize () from /lib64/libc.so.6
#3 0x00007ffff7b7af13 in __do_global_dtors_aux () from
/home/abuild/rpmbuild/BUILD/trafficserver-9.0.0/src/tscore/.libs/libtscore.so.9
#4 0x00007fffffffe770 in ?? ()
#5 0x00007ffff7de6e63 in _dl_fini () from /lib64/ld-linux-x86-64.so.2
Backtrace stopped: frame did not save the PC
```
Also it seems to be reproducible without running any test in LogUtils2:
```
abuild@linux-k2lg:/home/abuild/rpmbuild/BUILD/trafficserver-9.0.0>
LD_LIBRARY_PATH="/home/abuild/rpmbuild/BUILD/trafficserver-9.0.0/src/tscore/.libs:/home/abuild/rpmbuild/BUILD/trafficserver-9.0.0/src/tscpp/util/.libs:$LD_LIBRARY_PATH"
proxy/logging/.libs/test_LogUtils2 --help
Catch v2.11.0
usage:
test_LogUtils2 [<test name|pattern|tags> ... ] options
[snip]
For more detailed usage please see the project docs
Segmentation fault (core dumped)
```
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]