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]


Reply via email to