Hi Walt,

> https://github.com/apache/trafficserver-libswoc/blob/SolidWallOfCode-patch-1/code/include/swoc/Errata.h
> 
> The file is under 1000 lines.  Perhaps you are seeing a bug that was fixed, or
> are using an incompatible library?

That repo seems to be no longer in use -- this library was imported into, and 
substantially changed for, Trafficserver 10.  Here's the equivalent file now:
  
https://github.com/apache/trafficserver/blob/master/lib/swoc/include/swoc/Errata.h

--Jered




> On Thursday, January 9, 2025 at 01:00:09 PM EST, Jered Floyd
> <je...@convivian.com> wrote:
> 
> 
> 
> 
> 
> 
> Following up to myself, removing -Wp,-D_GLIBCXX_ASSERTIONS from my CFLAGS
> resolves this so I believe this is a legitimate memory safety issue in Errata
> (or the test).  I've opened an issue on GitHub to track:
> https://github.com/apache/trafficserver/issues/11948
> 
> --Jered
> 
> ----- On Jan 8, 2025, at 3:31 PM, Jered Floyd je...@convivian.com wrote:
> 
>> Happy new year!
>> 
>> I finally added a debugger into my mock build environment to debug the
>> test_libswoc assertion failures I see trying to build trafficserver 10 for
>> Fedora/RHEL production.
>> 
>> Here is the backtrace -- any help is appreciated since I'm not very clear on
>> what this library is supposed to be doing and docs.solidwallofcode.com no
>> longer exists.  From the backtrace this looks like possibly bwformat() tries 
>> to
>> deference an uninitialized note.severity (via an accessor function
>> Annotation.severity()) without first checking validity, which triggers the
>> enabled assertion.
>> 
>> This all looks majorly refactored from 9.2.x so I don't have a point of
>> comparison for these modules.
>> 
>> Thanks,
>> --Jered
>> 
>> /usr/include/c++/14/optional:482: constexpr const _Tp&
>> std::_Optional_base_impl<_Tp, _Dp>::_M_get() const [with _Tp =
>> swoc::_1_5_12::Errata::Severity; _Dp =
>> std::_Optional_base<swoc::_1_5_12::Errata::Severity, true, true>]: Assertion
>> 'this->_M_is_engaged()' failed.
>> 
>> Program received signal SIGABRT, Aborted.
>> 0x00007ffff7a7fe64 in __pthread_kill_implementation () from /lib64/libc.so.6
>> Missing rpms, try: dnf --enablerepo='*debug*' install
>> libstdc++-debuginfo-14.2.1-6.fc42.x86_64
>> glibc-debuginfo-2.40.9000-26.fc42.x86_64 
>> libgcc-debuginfo-14.2.1-6.fc42.x86_64
>> (gdb) bt
>> #0  0x00007ffff7a7fe64 in __pthread_kill_implementation () from 
>> /lib64/libc.so.6
>> #1  0x00007ffff7a2649e in raise () from /lib64/libc.so.6
>> #2  0x00007ffff7a0e397 in abort () from /lib64/libc.so.6
>> #3  0x00007ffff7c3e2f0 in std::__glibcxx_assert_fail(char const*, int, char
>> const*, char const*) () from /lib64/libstdc++.so.6
>> #4  0x00007ffff7f93eb7 in
>> std::_Optional_base_impl<swoc::_1_5_12::Errata::Severity,
>> std::_Optional_base<swoc::_1_5_12::Errata::Severity, true, true> >::_M_get
>> (this=0x55555580c0ca)
>>    at /usr/include/c++/14/optional:480
>> #5  std::_Optional_base_impl<swoc::_1_5_12::Errata::Severity,
>> std::_Optional_base<swoc::_1_5_12::Errata::Severity, true, true> >::_M_get
>> (this=0x55555580c0ca)
>>    at /usr/include/c++/14/optional:480
>> #6  std::optional<swoc::_1_5_12::Errata::Severity>::operator*() const &
>> (this=0x55555580c0ca) at /usr/include/c++/14/optional:968
>> #7  swoc::_1_5_12::Errata::Annotation::severity (this=0x55555580c0b8) at
>> /builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/swoc/include/swoc/Errata.h:1002
>> #8  swoc::_1_5_12::bwformat (bw=..., errata=...) at
>> /builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/swoc/src/Errata.cc:155
>> #9  0x0000555555627a62 in
>> swoc::_1_5_12::BufferWriter::print_nfv<swoc::_1_5_12::bwf::NameBinding 
>> const&,
>> swoc::_1_5_12::bwf::Format::TextViewExtractor> (this=0x7fffffffd4e0, 
>> names=...,
>>    ex=..., args=...) at
>>    
>>/builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/swoc/include/swoc/bwf_base.h:898
>> #10 0x0000555555637593 in
>> swoc::_1_5_12::BufferWriter::print_v<swoc::_1_5_12::Errata const&>
>> (fmt=<synthetic pointer>..., this=0x7fffffffd4e0, args=std::tuple containing 
>> =
>> {...})
>>    at
>>    
>>/builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/swoc/include/swoc/bwf_base.h:612
>> #11 swoc::_1_5_12::FixedBufferWriter::print_v<swoc::_1_5_12::Errata const&>
>> (this=0x7fffffffd4e0, fmt=..., args=std::tuple containing = {...})
>>    at
>>    
>>/builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/swoc/include/swoc/bwf_base.h:1221
>> #12 swoc::_1_5_12::bwprint_v<swoc::_1_5_12::Errata
>> const&>(std::__cxx11::basic_string<char, std::char_traits<char>,
>> std::allocator<char> >&, swoc::_1_5_12::TextView,
>> std::tuple<swoc::_1_5_12::Errata const&> const&)::{lambda()#1}::operator()()
>> const (__closure=<synthetic pointer>)
>>    at
>>    
>>/builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/swoc/include/swoc/bwf_base.h:1152
>> #13 swoc::_1_5_12::bwprint_v<swoc::_1_5_12::Errata const&> (s="", fmt=...,
>> args=std::tuple containing = {...})
>>    at
>>    
>>/builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/swoc/include/swoc/bwf_base.h:1153
>> #14 swoc::_1_5_12::bwprint<swoc::_1_5_12::Errata const&> (s="", fmt=...) at
>> /builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/swoc/include/swoc/bwf_base.h:1180
>> #15 operator() (__closure=<optimized out>, errata=...) at
>> /builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/swoc/unit_tests/test_Errata.cc:71
>> #16 std::__invoke_impl<void, test_Errata_init()::<lambda(const
>> swoc::_1_5_12::Errata&)>&, const swoc::_1_5_12::Errata&> (__f=...) at
>> /usr/include/c++/14/bits/invoke.h:61
>> #17 std::__invoke_r<void, test_Errata_init()::<lambda(const
>> swoc::_1_5_12::Errata&)>&, const swoc::_1_5_12::Errata&> (__fn=...) at
>> /usr/include/c++/14/bits/invoke.h:111
>> #18 std::_Function_handler<void(const swoc::_1_5_12::Errata&),
>> test_Errata_init()::<lambda(const swoc::_1_5_12::Errata&)> >::_M_invoke(const
>> std::_Any_data &, const swoc::_1_5_12::Errata &)
>>    (__functor=..., __args#0=...) at 
>>/usr/include/c++/14/bits/std_function.h:290
>> #19 0x00007ffff7f92fc1 in std::function<void(swoc::_1_5_12::Errata
>> const&)>::operator() (this=<optimized out>, __args#0=...) at
>> /usr/include/c++/14/bits/std_function.h:591
>> #20 swoc::_1_5_12::Errata::SinkWrapper::operator() (this=<optimized out>, 
>> e=...)
>> at
>> /builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/swoc/include/swoc/Errata.h:1318
>> #21 swoc::_1_5_12::Errata::sink (this=0x7fffffffd5d0) at
>> /builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/swoc/src/Errata.cc:57
>> #22 0x00007ffff7f9305d in swoc::_1_5_12::Errata::~Errata
>> (this=this@entry=0x7fffffffd5d0, __in_chrg=<optimized out>)
>>    at
>>    
>>/builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/swoc/src/Errata.cc:50
>> #23 0x000055555562dfdc in C_A_T_C_H_T_E_S_T_0 () at
>> /builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/swoc/unit_tests/test_Errata.cc:114
>> #24 0x000055555559c891 in Catch::TestInvokerAsFunction::invoke 
>> (this=<optimized
>> out>) at
>> /builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/catch2/catch.hpp:14328
>> #25 Catch::TestCase::invoke (this=<optimized out>) at
>> /builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/catch2/catch.hpp:14167
>> #26 Catch::RunContext::invokeActiveTestCase (this=0x7fffffffdc90) at
>> /builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/catch2/catch.hpp:13027
>> #27 0x00005555555bb257 in Catch::RunContext::runCurrentTest
>> (this=this@entry=0x7fffffffdc90, redirectedCout="", redirectedCerr="")
>>    at
>>    
>>/builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/catch2/catch.hpp:13000
>> #28 0x00005555555bb738 in Catch::RunContext::runTest
>> (this=this@entry=0x7fffffffdc90, testCase=...)
>>    at
>>    
>>/builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/catch2/catch.hpp:12761
>> #29 0x00005555555cc650 in Catch::(anonymous namespace)::TestGroup::execute
>> (this=0x7fffffffdc80)
>>    at
>>    
>>/builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/catch2/catch.hpp:13354
>> #30 Catch::Session::runInternal (this=this@entry=0x7fffffffdf30) at
>> /builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/catch2/catch.hpp:13560
>> #31 0x00005555555ccc5f in Catch::Session::run 
>> (this=this@entry=0x7fffffffdf30)
>> at
>> /builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/catch2/catch.hpp:13516
>> #32 0x000055555558f6a2 in Catch::Session::run<char> (this=0x7fffffffdf30,
>> argc=1, argv=0x7fffffffe218)
>>    at
>>    
>>/builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/catch2/catch.hpp:13238
>> #33 Catch::Session::run<char> (this=0x7fffffffdf30, argc=1, 
>> argv=0x7fffffffe218)
>> at
>> /builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/catch2/catch.hpp:13233
>> #34 main (argc=1, argv=0x7fffffffe218) at
>> /builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/swoc/unit_tests/unit_test_main.cc:36
>> 
>> 
>> 
>> 
>> ----- On Dec 13, 2024, at 5:01 PM, Jered Floyd je...@convivian.com wrote:
>> 
>>> Hi Chris,
>>> 
>>> Sorry for the delay in getting back to you.
>>> 
>>> I've disabled to the verify_* tests for the time being; the way that 
>>> rpmbuild
>>> works is that build/install happens to a build-user-owned DESTDIR so files 
>>> can
>>> be gathered for packaging. Simply installing the previous version doesn't 
>>> help
>>> because the build user doesn't have access to /etc/trafficserver (due to
>>> default permissions). The koji build system sets up BuildRequires based on 
>>> the
>>> spec file, but I don't think there's a way I can ask it to do something as 
>>> root
>>> (like changing the directory permissions). I'll investigate further.
>>> 
>>> I'll return to the linking error later, but right now the problem I've run 
>>> into
>>> is an assertion failure in libswoc; see the end of the build log here:
>>> https://kojipkgs.fedoraproject.org//work/tasks/48/126810048/build.log
>>> 
>>> 5/63 Test #1: test_libswoc ...........................Subprocess
>>> aborted***Exception: 0.15 sec
>>> /usr/include/c++/14/optional:482: constexpr const _Tp&
>>> std::_Optional_base_impl<_Tp, _Dp>::_M_get() const [with _Tp =
>>> swoc::_1_5_12::Errata::Severity; _Dp =
>>> std::_Optional_base<swoc::_1_5_12::Errata::Severity, true, true>]: Assertion
>>> 'this->_M_is_engaged()' failed.
>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> test_libswoc is a Catch v2.13.8 host application.
>>> Run with -? for options
>>> -------------------------------------------------------------------------------
>>> Errata copy
>>> -------------------------------------------------------------------------------
>>> /builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/swoc/unit_tests/test_Errata.cc:84
>>> ...............................................................................
>>> /builddir/build/BUILD/trafficserver-10.0.2-build/trafficserver-10.0.2/lib/swoc/unit_tests/test_Errata.cc:84:
>>> FAILED:
>>> {Unknown expression after the reported line}
>>> due to a fatal error condition:
>>> SIGABRT - Abort (abnormal termination) signal
>>> 
>>> I'll do a local build in a mock environment and see if I can attach a gdb to
>>> this process, but any pointers on what might be going on? I haven't kept up
>>> with C++17...
>>> 
>>> Thanks,
>>> --Jered
>>> 
>>> ----- On Nov 17, 2024, at 11:25 AM, Chris McFarlen <ch...@mcfarlen.us> 
>>> wrote:
>>> 
>>>> Hi Jered,
>>> 
>>>> You are correct there is a chicken-egg issue with the tests that verify 
>>>> plugin
>>>> linkage (verify_.* tests). They use traffic_server's verify plugin command 
>>>> and
>>>> the traffic_server initialization code wants the install directories to 
>>>> exist.
>>>> I plan on fixing this before the next release. If installing before testing
>>>> isn't an option for your build, a workaround would be to comment or remove 
>>>> the
>>>> bodies of the verify_remap_plugin and verify_global_plugin in
>>>> cmake/add_atsplugin.cmake. Just leave the function definitions in place.
>>> 
>>>> I might be able to help with the linking issues as well if you can provide 
>>>> some
>>>> steps to reproduce.
>>> 
>>>> Thanks!
>>>> Chris
>>> 
>>>> Sent with Proton Mail secure email.
>>> 
>>>> On Saturday, November 16th, 2024 at 5:30 PM, Jered Floyd 
>>>> <je...@convivian.com>
>>>> wrote:
>>> 
>>>>> [This is specifically regarding trafficserver 10.0.2.]
>>> 
>>>>> I've managed to get a successful build by disabling link time optimization
>>>>> features (default Fedora build flags "-flto=auto -ffat-lto-objects") -- 
>>>>> that
>>>>> works in 9.2.6 so there's something else at play, but I'll look into that
>>>>> later.
>>> 
>>>>> Now I'm running into ctest problems, which happen even if I build in a 
>>>>> vanilla
>>>>> environment following the README.md build instructions. In particular, 
>>>>> ctest
>>>>> doesn't use config files nor run or logdirs from the build environment. It
>>>>> appears that running "cd build; ctest" will not pass unless there is an
>>>>> existing install of traffic server installed. Have I missed something 
>>>>> here?
>>> 
>>>>> Thanks,
>>>>> --Jered
>>> 
>>>>> ----- On Nov 14, 2024, at 11:56 AM, Jered Floyd je...@convivian.com wrote:
>>> 
>>>>> > Hello!
>>> 
>>>>> > I am trying to get ATS 10.x ready for Fedora rawhide/f42 and EPEL 10, 
>>>>> > and am
>>>>> > running into some problems with CMake execution. I've banged my head 
>>>>> > against it
>>>>> > for a few days so now I'm reaching out in hopes of finding an ATS CMake 
>>>>> > expert.
>>> 
>>>>> > What seems to be happening is that the build nearly completes, and then 
>>>>> > linking
>>>>> > some of the last tests and application components fails due to missing 
>>>>> > symbols.
>>>>> > This seems to be at least partly due to the library ordering, as a 
>>>>> > quick hack
>>>>> > of repeating the library list (manually) gets a bit further through the 
>>>>> > build
>>>>> > process. I'm not very familiar with CMake, so I'm not sure where to go 
>>>>> > from
>>>>> > here.
>>> 
>>>>> > You can find an entire build log here, where I've disabled build 
>>>>> > parallelism for
>>>>> > clarity. Everything blows up with linker errors about 50% through the 
>>>>> > file; I
>>>>> > recommend searching on "[100%] Linking CXX executable 
>>>>> > test_PluginFactory" as
>>>>> > the subsequent link 2 lines later fails:
>>>>> > [ 
>>>>> > https://kojipkgs.fedoraproject.org//work/tasks/5517/125855517/build.log 
>>>>> > |
>>>>> > https://kojipkgs.fedoraproject.org//work/tasks/5517/125855517/build.log 
>>>>> > ]
>>> 
>>>>> > Any debugging help would be greatly appreciated!
>>> 
>>>>> > Regards,
> > > > > > --Jered

Reply via email to