After upgrading to newest Ubuntu 2022.04 I started seeing following crashes of programs using libgcc_s.so:
#0 _dl_find_object (pc1=0x10000003f5ca <_Unwind_Resume+58>, result=0x200000200180) at linux.cc:542 #1 0x00001000000410f6 in _Unwind_Find_FDE () #2 0x000010000003d833 in ?? () #3 0x000010000003ead0 in ?? () #4 0x000010000003f5cb in _Unwind_Resume () #5 0x0000100000062daa in ?? () #6 0x0000100000075b5c in boost::execution_monitor::vexecute(boost::function<void ()> const&) () #7 0x000010000007f0a9 in boost::unit_test::framework::init(bool (*)(), int, char**) () #8 0x000010000009254d in boost::unit_test::unit_test_main(bool (*)(), int, char**) () #9 0x000000004039d001 in osv::application::run_main (this=0xffffa00000bd8c10) at core/app.cc:416 #10 0x000000004039d20d in operator() (app=<optimized out>, __closure=0x0) at core/app.cc:236 #11 _FUN () at core/app.cc:238 #12 0x00000000403d084a in operator() (__closure=0xffffa00000d57800) at libc/pthread.cc:116 #13 std::__invoke_impl<void, pthread_private::pthread::pthread(void* (*)(void*), void*, sigset_t, const pthread_private::thread_attr*)::<lambda()>&> (__f=...) at /usr/include/c++/11/bits/invoke.h:61 #14 std::__invoke_r<void, pthread_private::pthread::pthread(void* (*)(void*), void*, sigset_t, const pthread_private::thread_attr*)::<lambda()>&> (__fn=...) at /usr/include/c++/11/bits/invoke.h:154 #15 std::_Function_handler<void(), pthread_private::pthread::pthread(void* (*)(void*), void*, sigset_t, const pthread_private::thread_attr*)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/11/bits/std_function.h:290 #16 0x000000004036b58e in sched::thread::main (this=0xffff800000f6a040) at core/sched.cc:1267 #17 sched::thread_main_c (t=0xffff800000f6a040) at arch/x64/arch-switch.hh:325 #18 0x00000000402fda03 in thread_main () at arch/x64/entry.S:116 After some digging I discovered this new function was added as per this patch to libc - https://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg275305.html. And there s this description: http://www.gnu.org/software/libc/manual/html_node/Dynamic-Linker-Introspection.html It is interesting that libgcc_s.so on pretty new Fedora 35 with newer gcc does not need this. I tried to stub something but this is not enough: struct dl_find_object { __extension__ unsigned long long int dlfo_flags; void *dlfo_map_start; /* Beginning of mapping containing address. */ void *dlfo_map_end; /* End of mapping. */ struct link_map *dlfo_link_map; void *dlfo_eh_frame; /* Exception handling data of the object. */ __extension__ unsigned long long int __dflo_reserved[7]; }; #include <osv/elf.hh> extern "C" int _dl_find_object (void *pc1, dl_find_object* result) { result->dlfo_eh_frame = 0; result->dlfo_link_map = 0; // where would this come from? auto eo = elf::get_program()->object_containing_addr(pc1); result->dlfo_map_start = (void*)(eo->base()); result->dlfo_map_end = (void*)(eo->end()); return 0; } Any suggestions would be welcome. Regards, Waldek -- You received this message because you are subscribed to the Google Groups "OSv Development" group. To unsubscribe from this group and stop receiving emails from it, send an email to osv-dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/osv-dev/8a1d87f7-4d50-44d7-872a-7a94bc453397n%40googlegroups.com.