Package: facter Version: 3.14.12-1+b1 Severity: important
Hello, recently our CI starts to fail with new facter version 3.14.12-1+b1 with segfault somewhere in some directory listing code, where 3.11.0-4.1 works fine. The issue is reproducible in our custom VM (Xen based Bullseye VM) and also i debian/bullseye docker container. Just running `facter` from the command line is sufficient to SEGFAULT. Given the last few frames I'd suspect the mix of libboost in two versions ``` (gdb) bt #0 0x00007fdc91790b08 in boost::filesystem::detail::directory_iterator_increment(boost::filesystem::directory_iterator&, boost::system::error_code*) () from /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 #1 0x00007fdc909b0299 in boost::filesystem::detail::directory_iterator_construct(boost::filesystem::directory_iterator&, boost::filesystem::path const&, unsigned int, boost::system::error_code*) () from /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.74.0 #2 0x00007fdc915c5659 in leatherman::execution::exec_child(int, int, int, unsigned long, char const*, char const**, char const**) () from /usr/lib/x86_64-linux-gnu/libleatherman_execution.so.1.12.1 ``` where the root cause might be version requirements difference between facter and libleatherman1.12.1 ``` Package: facter Version: 3.14.12-1+b1 Depends: libfacter3.14.12 (= 3.14.12-1+b1), libboost-program-options1.71.0, libc6 (>= 2.14), libgcc-s1 (>= 3.0), libleatherman1.12.1 (>= 1.12.1+dfsg), libstdc++6 (>= 9), ruby (>= 1:2.7~0) Package: libleatherman1.12.1 Version: 1.12.1+dfsg-1+b2 Depends: libboost-filesystem1.74.0 (>= 1.74.0), libboost-locale1.74.0 (>= 1.74.0), libboost-log1.74.0 (>= 1.74.0), libboost-regex1.74.0-icu67, libc6 (>= 2.25), libcurl4 (>= 7.16.2), libgcc-s1 (>= 3.0), libstdc++6 (>= 5.2) ``` where the facter requires 1.71.0 and libleatherman requires 1.74.0. That might be fine, but somehow call from libboost_filesystem.so.1.74.0 ends up in libboost_filesystem.so.1.71.0 which is wierd, but I might be very wrong here (broken linker/PTL/GOT ?). Any advice, help or bug forward to correct place would be very appreciated. Thank you Radoslav Bodo ## packages installed root@e6ce64eea94f:/btools# dpkg -l | grep -E '(facter|puppet|ruby|libboost)' ii facter 3.14.12-1+b1 amd64 collect and display facts about the system ii libboost-filesystem1.71.0:amd64 1.71.0-7+b1 amd64 filesystem operations (portable paths, iteration over directories, etc) in C++ ii libboost-filesystem1.74.0:amd64 1.74.0-3+b1 amd64 filesystem operations (portable paths, iteration over directories, etc) in C++ ii libboost-locale1.71.0:amd64 1.71.0-7+b1 amd64 C++ facilities for localization ii libboost-locale1.74.0:amd64 1.74.0-3+b1 amd64 C++ facilities for localization ii libboost-log1.74.0 1.74.0-3+b1 amd64 C++ logging library ii libboost-program-options1.71.0:amd64 1.71.0-7+b1 amd64 program options library for C++ ii libboost-regex1.71.0:amd64 1.71.0-7+b1 amd64 regular expression library for C++ ii libboost-regex1.74.0:amd64 1.74.0-3+b1 amd64 regular expression library for C++ ii libboost-thread1.71.0:amd64 1.71.0-7+b1 amd64 portable C++ multi-threading ii libboost-thread1.74.0:amd64 1.74.0-3+b1 amd64 portable C++ multi-threading ii libfacter3.14.12:amd64 3.14.12-1+b1 amd64 collect and display facts about the system -- shared library ii libruby2.7:amd64 2.7.2-3 amd64 Libraries necessary to run Ruby 2.7 ii rake 13.0.1-4 all ruby make-like utility ii ruby 1:2.7+2 amd64 Interpreter of object-oriented scripting language Ruby (default version) ii ruby-augeas 1:0.5.0-3+b8 amd64 Augeas bindings for the Ruby language ii ruby-deep-merge 1.1.1-1 all recursively merge Hash elements in Ruby ii ruby-minitest 5.13.0-1 all Ruby test tools supporting TDD, BDD, mocking, and benchmarking ii ruby-net-telnet 0.1.1-2 all telnet client library ii ruby-power-assert 1.1.7-1 all library showing values of variables and method calls in an expression ii ruby-rubygems 3.2.0~rc.2-5 all Package management framework for Ruby ii ruby-selinux:amd64 3.1-2+b2 amd64 Ruby bindings to SELinux shared libraries ii ruby-shadow 2.5.0-1+b4 amd64 interface of shadow password for Ruby ii ruby-test-unit 3.3.5-1 all unit testing framework for Ruby ii ruby-xmlrpc 0.3.0-2 all XMLRPC library for Ruby ii ruby2.7 2.7.2-3 amd64 Interpreter of object-oriented scripting language Ruby ii rubygems-integration 1.17.3 all integration of Debian Ruby packages with Rubygems ## gdb backtrace ``` root@e6ce64eea94f:/# gdb /usr/bin/facter core Reading symbols from /usr/bin/facter... (No debugging symbols found in /usr/bin/facter) [New LWP 4882] [New LWP 4881] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Core was generated by `facter'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x00007fdc91790b08 in boost::filesystem::detail::directory_iterator_increment(boost::filesystem::directory_iterator&, boost::system::error_code*) () from /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 [Current thread is 1 (LWP 4882)] (gdb) bt #0 0x00007fdc91790b08 in boost::filesystem::detail::directory_iterator_increment(boost::filesystem::directory_iterator&, boost::system::error_code*) () from /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 #1 0x00007fdc909b0299 in boost::filesystem::detail::directory_iterator_construct(boost::filesystem::directory_iterator&, boost::filesystem::path const&, unsigned int, boost::system::error_code*) () from /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.74.0 #2 0x00007fdc915c5659 in leatherman::execution::exec_child(int, int, int, unsigned long, char const*, char const**, char const**) () from /usr/lib/x86_64-linux-gnu/libleatherman_execution.so.1.12.1 #3 0x00007fdc915cd51c in leatherman::execution::create_child(leatherman::util::option_set<leatherman::execution::execution_options> const&, int, int, int, unsigned long, char const*, char const**, char const**) () from /usr/lib/x86_64-linux-gnu/libleatherman_execution.so.1.12.1 #4 0x00007fdc915c9617 in leatherman::execution::execute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const*, std::function<void (unsigned long)> const&, std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> const&, std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> const&, leatherman::util::option_set<leatherman::execution::execution_options> const&, unsigned int) () from /usr/lib/x86_64-linux-gnu/libleatherman_execution.so.1.12.1 #5 0x00007fdc915ad071 in leatherman::execution::execute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, unsigned int, leatherman::util::option_set<leatherman::execution::execution_options> const&) () from /usr/lib/x86_64-linux-gnu/libleatherman_execution.so.1.12.1 #6 0x00007fdc915fc2a6 in leatherman::ruby::api::find_library() () from /usr/lib/x86_64-linux-gnu/libleatherman_ruby.so.1.12.1 #7 0x00007fdc915fc9fc in leatherman::ruby::api::create() () from /usr/lib/x86_64-linux-gnu/libleatherman_ruby.so.1.12.1 #8 0x00007fdc915fcddb in leatherman::ruby::api::instance() () from /usr/lib/x86_64-linux-gnu/libleatherman_ruby.so.1.12.1 #9 0x00007fdc91f880f1 in facter::ruby::initialize(bool) () from /usr/lib/x86_64-linux-gnu/libfacter.so.3.14.12 #10 0x000055c3a72413c7 in main () (gdb) ```