diff --git a/modules/tests/Makefile b/modules/tests/Makefileindex e4ef8dcc..a5633308 100644--- a/modules/tests/Makefile+++ b/modules/tests/Makefile@@ -177,12 +177,9 @@ zfs-only-boost-tests := tst-rename.so boost-tests += $($(fs_type)-only-boost-tests) -BOOSTLIBS=$(src)/external/$(ARCH)/misc.bin/usr/lib64 $(boost-tests:%=$(out)/tests/%): LIBS += \- $(BOOSTLIBS)/libboost_unit_test_framework.so \- $(BOOSTLIBS)/libboost_filesystem.so-$(boost-tests:%=$(out)/tests/%): CXXFLAGS += -D_GLIBCXX_USE_CXX11_ABI=0 \- -isystem $(src)/external/$(ARCH)/misc.bin/usr/include+ -lboost_unit_test_framework \+ -lboost_filesystem tests += $(boost-tests) diff --git a/modules/tests/usr.manifest.skel b/modules/tests/usr.manifest.skelindex 2de441f9..7653760a 100644--- a/modules/tests/usr.manifest.skel+++ b/modules/tests/usr.manifest.skel@@ -1,4 +1,4 @@-/usr/lib/&/libboost_unit_test_framework.so.1.55.0: %(miscbase)s/usr/lib64/&-/usr/lib/&/libboost_filesystem.so.1.55.0: %(miscbase)s/usr/lib64/&-/usr/lib/&/libboost_system.so.1.55.0: %(miscbase)s/usr/lib64/&+/usr/lib/&/libboost_unit_test_framework.so.1.69.0: /lib64/&+/usr/lib/&/libboost_filesystem.so.1.69.0: /lib64/&+/usr/lib/&/libboost_system.so.1.69.0: /lib64/& /testrunner.so: ./tests/testrunner.so TEST tst-rcu-hashtable.so Running OSv on qemu with parameters: [-s -e --power-off-on-abort /tests/tst-rcu-hashtable.so --pass-args=-monitor unix:qemu-monitor,server,nowait --block-device-cache unsafe]OSv v0.54.0-44-g5526c8abeth0: 192.168.122.15Booted up in 186.88 msCmdline: /tests/tst-rcu-hashtable.soRunning 2 test cases...
*** No errors detectedAborted
[backtrace]0x00000000402197c3 <???+1075943363>0x0000000040463f7e <osv::handle_mmap_fault(unsigned long, int, exception_frame*)+30>0x000000004033da01 <mmu::vm_fault(unsigned long, exception_frame*)+385>0x000000004039d62f <page_fault+143>0x000000004039c486 <???+1077527686>0x000010000041f5f6 <???+4322806>0x0000000040352c5c <elf::object::run_fini_funcs()+140>0x0000000040354616 <elf::program::remove_object(elf::object*)+118>0x0000000040354e30 <???+1077235248>0x0000000040354ae4 <elf::program::remove_object(elf::object*)+1348>0x0000000040354e30 <???+1077235248>0x000000004042c14f <osv::application::join()+623>0x000000004022a504 <do_main_thread(void*)+2644>0x000000004045fdb5 <???+1078328757>0x00000000403f9ce7 <thread_main_c+39>0x000000004039d402 <???+1077531650>Test tst-rcu-hashtable.so FAILEDTraceback (most recent call last): File "./scripts/test.py", line 204, in <module> main() File "./scripts/test.py", line 183, in main run_tests() File "./scripts/test.py", line 174, in run_tests run(tests_to_run) File "./scripts/test.py", line 94, in run run_test(test) File "./scripts/test.py", line 69, in run_test test.run() File "/git-repos/osv/scripts/tests/testing.py", line 38, in run run_command_in_guest(self.command, hypervisor=self.hypervisor, run_py_args=self.run_py_args).join() File "/git-repos/osv/scripts/tests/testing.py", line 186, in join raise Exception('Guest failed')Exception: Guest failed(gdb) bt#0 0x00000000403a36f2 in processor::cli_hlt () at arch/x64/processor.hh:247#1 arch::halt_no_interrupts () at arch/x64/arch.hh:48#2 osv::halt () at arch/x64/power.cc:26#3 0x0000000040239d4e in abort (fmt=fmt@entry=0x406414bf "Aborted\n") at runtime.cc:132#4 0x00000000402028ab in abort () at runtime.cc:98#5 0x00000000402197c4 in osv::generate_signal (siginfo=..., ef=0xffff80000123c068) at libc/signal.cc:124#6 0x0000000040463f7f in osv::handle_mmap_fault (addr=<optimized out>, sig=<optimized out>, ef=<optimized out>) at libc/signal.cc:139#7 0x000000004033da02 in mmu::vm_fault (addr=17592187015168, addr@entry=17592187015648, ef=ef@entry=0xffff80000123c068) at core/mmu.cc:1337#8 0x000000004039d630 in page_fault (ef=0xffff80000123c068) at arch/x64/mmu.cc:42#9 <signal handler called>#10 0x00001000000ed1e0 in ?? ()#11 0x000000004023a2f7 in __cxxabiv1::__cxa_finalize (dso=<optimized out>) at runtime.cc:183#12 0x000010000041f5f7 in ?? ()#13 0x0000200000100940 in ?? ()#14 0x0000000040352c5d in elf::object::run_fini_funcs (this=0xffffa0000160ee00) at core/elf.cc:1070I have been trying to upgrade unit tests to use boost from host instead of depending on externals. One one the previous patches I sent fixed compilation errors.However when I update the tests makefile and manifest file I see that some tests fail with very similar page fault error on Fedora 30 which comes with boost 1.69.0. The same tests pass just fine on latest Ubuntu 19.10 hat comes with older boost 1.67.0.
--
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+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/osv-dev/5539bd38-a7d8-485f-ba51-40b90c16d0f5%40googlegroups.com.
On Thu, Nov 28, 2019 at 8:00 AM Waldek Kozaczuk <jwkoz...@gmail.com> wrote:I have been trying to upgrade unit tests to use boost from host instead of depending on externals. One one the previous patches I sent fixed compilation errors.However when I update the tests makefile and manifest file I see that some tests fail with very similar page fault error on Fedora 30 which comes with boost 1.69.0. The same tests pass just fine on latest Ubuntu 19.10 hat comes with older boost 1.67.0.Just to make sure, please make sure to delete the old compilation results ("make clean") so we don't see some mixture of old and new stuff.
/tests/tst-async.so: failed looking up symbol _ZN5boost9unit_test9ut_detail24normalize_test_case_nameENS0_13basic_cstringIKcEE (boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>))
[backtrace]0x00000000403558c6 <elf::object::symbol(unsigned int, bool)+1542>0x0000000040355992 <elf::object::resolve_pltgot(unsigned int)+130>0x0000000040355c93 <elf_resolve_pltgot+51>0x000000004039c0bd <???+1077526717>0x0000200000200e0f <???+2100751>0x010000100000080e <???+2062> LIBOSV.SO STRIP loader.elf -> loader-stripped.elf strip: build/release.x64/loader.elf[.gnu.build.attributes.text._ZN5boost6system23dummy_exported_functionEv]: Warning: version note missing - assuming version 3strip:build/release.x64/loader-stripped.elf[.gnu.build.attributes.unlikely]: error: failed to copy merged notes into output: file in wrong format LZ loader-stripped.elfIt seems there is a C++ destructor in the test code (or Boost framework) being run, which causes a crash. But I don't know what it is...
To unsubscribe from this group and stop receiving emails from it, send an email to osv...@googlegroups.com.
Please note I have removed this line from the tests Makefile:-$(boost-tests:%=$(out)/tests/%): CXXFLAGS += -D_GLIBCXX_USE_CXX11_ABI=0 \I do not fully understand the significance of it nor the reasons for it in the first place (why was it there). Could it cause this issue?
BTW I also now noticed this linker warning (not sure if related):LIBOSV.SOSTRIP loader.elf -> loader-stripped.elfstrip: build/release.x64/loader.elf[.gnu.build.attributes.text._ZN5boost6system23dummy_exported_functionEv]: Warning: version note missing - assuming version 3strip:build/release.x64/loader-stripped.elf[.gnu.build.attributes.unlikely]: error: failed to copy merged notes into output: file in wrong formatLZ loader-stripped.elf
Is the backtrace broken? The important line is#10 0x00001000000ed1e0 in ?? ()Which is inside the test executable. Did you try "osv syms"?I did. There were couple of libraries that had missing debug info missing. Installed still did not help and backtrace looks like this - broken:
It seems there is a C++ destructor in the test code (or Boost framework) being run, which causes a crash. But I don't know what it is...Not sure it is related but our usr.manifest.skel pulls ancient libgc_s.so from externals.
Changing it to pull from host creates other issues which I will send email about.
Cmdline: /tests/tst-bsd-tcp1.soELF [tid:27, /libvdso.so]: InstantiatedELF [tid:27, /libvdso.so]: The base set to: 0x0000000000063000 and end: 0x0000000000067030ELF [tid:27, /libvdso.so]: Loading segmentsELF [tid:27, /libvdso.so]: Loaded and mapped PT_LOAD segment at: 0x0000000000063000 of size: 0x1000ELF [tid:27, /libvdso.so]: Loaded and mapped PT_LOAD segment at: 0x0000000000064000 of size: 0x1000ELF [tid:27, /libvdso.so]: Loaded and mapped PT_LOAD segment at: 0x0000000000065000 of size: 0x1000ELF [tid:27, /libvdso.so]: Loaded and mapped PT_LOAD segment at: 0x0000000000066000 of size: 0x2000ELF [tid:27, /libvdso.so]: Relocated 3 PLT symbols in DT_JMPRELELF [tid:27, /libvdso.so]: versioned symbol tableELF [tid:27, /tests/tst-bsd-tcp1.so]: InstantiatedELF [tid:27, /tests/tst-bsd-tcp1.so]: The base set to: 0x0000000000068000 and end: 0x0000000000091630ELF [tid:27, /tests/tst-bsd-tcp1.so]: Loading segmentsELF [tid:27, /tests/tst-bsd-tcp1.so]: Loaded and mapped PT_LOAD segment at: 0x0000000000068000 of size: 0x11000ELF [tid:27, /tests/tst-bsd-tcp1.so]: Loaded and mapped PT_LOAD segment at: 0x0000000000079000 of size: 0x11000ELF [tid:27, /tests/tst-bsd-tcp1.so]: Loaded and mapped PT_LOAD segment at: 0x000000000008a000 of size: 0x5000ELF [tid:27, /tests/tst-bsd-tcp1.so]: Loaded and mapped PT_LOAD segment at: 0x000000000008f000 of size: 0x3000ELF [tid:27, /tests/tst-bsd-tcp1.so]: Found TLS segment at 0x000000000008f6a8 of aligned size: 8ELF [tid:27, /tests/tst-bsd-tcp1.so]: Loading DT_NEEDED object: libboost_unit_test_framework.so.1.69.0 ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: InstantiatedELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: The base set to: 0x0000000000092000 and end: 0x000000000013f768ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading segmentsELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000092000 of size: 0x1b000ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x00000000000ad000 of size: 0x6c000ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000119000 of size: 0x1f000ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000138000 of size: 0x6000ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading DT_NEEDED object: libboost_timer.so.1.69.0 ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: InstantiatedELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: The base set to: 0x0000000000140000 and end: 0x00000000001490f0ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loading segmentsELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000140000 of size: 0x3000ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000143000 of size: 0x3000ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000146000 of size: 0x1000ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000148000 of size: 0x2000ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loading DT_NEEDED object: libboost_chrono.so.1.69.0 ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: InstantiatedELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: The base set to: 0x000000000014a000 and end: 0x0000000000158070ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loading segmentsELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x000000000014a000 of size: 0x5000ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x000000000014f000 of size: 0x5000ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000154000 of size: 0x2000ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000157000 of size: 0x2000ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loading DT_NEEDED object: libboost_system.so.1.69.0 ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: InstantiatedELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: The base set to: 0x0000000000159000 and end: 0x000000000015d008ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loading segmentsELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000159000 of size: 0x1000ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x000000000015a000 of size: 0x1000ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x000000000015b000 of size: 0x1000ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x000000000015c000 of size: 0x1000ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loading DT_NEEDED object: librt.so.1 ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Relocated 7 symbols in DT_RELAELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Relocated 1 PLT symbols in DT_JMPRELELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loading DT_NEEDED object: librt.so.1 ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loading DT_NEEDED object: libpthread.so.0 ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loading DT_NEEDED object: libstdc++.so.6 ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loading DT_NEEDED object: libgcc_s.so.1 ELF [tid:27, /usr/lib/libgcc_s.so.1]: InstantiatedELF [tid:27, /usr/lib/libgcc_s.so.1]: The base set to: 0x0000000000200000 and end: 0x0000000000415400ELF [tid:27, /usr/lib/libgcc_s.so.1]: Loading segmentsELF [tid:27, /usr/lib/libgcc_s.so.1]: Loaded and mapped PT_LOAD segment at: 0x0000000000200000 of size: 0x15000ELF [tid:27, /usr/lib/libgcc_s.so.1]: Loaded and mapped PT_LOAD segment at: 0x0000000000414000 of size: 0x2000ELF [tid:27, /usr/lib/libgcc_s.so.1]: Loading DT_NEEDED object: libc.so.6 ELF [tid:27, /usr/lib/libgcc_s.so.1]: Relocated 11 symbols in DT_RELAELF [tid:27, /usr/lib/libgcc_s.so.1]: Relocated 44 PLT symbols in DT_JMPRELELF [tid:27, /usr/lib/libgcc_s.so.1]: versioned symbol tableELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loading DT_NEEDED object: libc.so.6 ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Relocated 146 symbols in DT_RELAELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Relocated 46 PLT symbols in DT_JMPRELELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: versioned symbol tableELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loading DT_NEEDED object: libboost_system.so.1.69.0 ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loading DT_NEEDED object: librt.so.1 ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loading DT_NEEDED object: libstdc++.so.6 ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loading DT_NEEDED object: libgcc_s.so.1 ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loading DT_NEEDED object: libc.so.6 ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Relocated 70 symbols in DT_RELAELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Relocated 51 PLT symbols in DT_JMPRELELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: versioned symbol tableELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading DT_NEEDED object: libboost_system.so.1.69.0 ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading DT_NEEDED object: librt.so.1 ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading DT_NEEDED object: libstdc++.so.6 ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading DT_NEEDED object: libm.so.6 ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading DT_NEEDED object: libm.so.6 ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading DT_NEEDED object: libgcc_s.so.1 ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading DT_NEEDED object: libpthread.so.0 ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading DT_NEEDED object: libc.so.6 ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Relocated 1622 symbols in DT_RELAELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Relocated 293 PLT symbols in DT_JMPRELELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: versioned symbol tableELF [tid:27, /tests/tst-bsd-tcp1.so]: Loading DT_NEEDED object: libboost_filesystem.so.1.69.0 ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: InstantiatedELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: The base set to: 0x0000000000416000 and end: 0x00000000004321c0ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loading segmentsELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000416000 of size: 0x7000ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x000000000041d000 of size: 0xe000ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x000000000042b000 of size: 0x5000ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000431000 of size: 0x2000ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loading DT_NEEDED object: libboost_system.so.1.69.0 ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loading DT_NEEDED object: librt.so.1 ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loading DT_NEEDED object: libstdc++.so.6 ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loading DT_NEEDED object: libgcc_s.so.1 ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loading DT_NEEDED object: libpthread.so.0 ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loading DT_NEEDED object: libc.so.6 ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Relocated 133 symbols in DT_RELAELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Relocated 139 PLT symbols in DT_JMPRELELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: versioned symbol tableELF [tid:27, /tests/tst-bsd-tcp1.so]: Loading DT_NEEDED object: libstdc++.so.6 ELF [tid:27, /tests/tst-bsd-tcp1.so]: Loading DT_NEEDED object: libm.so.6 ELF [tid:27, /tests/tst-bsd-tcp1.so]: Loading DT_NEEDED object: libgcc_s.so.1 ELF [tid:27, /tests/tst-bsd-tcp1.so]: Loading DT_NEEDED object: libc.so.6 ELF [tid:27, /tests/tst-bsd-tcp1.so]: Loading DT_NEEDED object: ld-linux-x86-64.so.2 ELF [tid:27, /tests/tst-bsd-tcp1.so]: Relocated 585 symbols in DT_RELAELF [tid:27, /tests/tst-bsd-tcp1.so]: Relocated 143 PLT symbols in DT_JMPRELELF [tid:27, /tests/tst-bsd-tcp1.so]: versioned symbol tableELF [tid:199, /usr/lib/libboost_filesystem.so.1.69.0]: Executing DT_INIT functionELF [tid:199, /usr/lib/libboost_filesystem.so.1.69.0]: Finished executing DT_INIT functionELF [tid:199, /usr/lib/libboost_filesystem.so.1.69.0]: Executing 3 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libboost_filesystem.so.1.69.0]: Finished executing 3 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libgcc_s.so.1]: Executing DT_INIT functionELF [tid:199, /usr/lib/libgcc_s.so.1]: Finished executing DT_INIT functionELF [tid:199, /usr/lib/libgcc_s.so.1]: Executing 2 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libgcc_s.so.1]: Finished executing 2 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libboost_system.so.1.69.0]: Executing DT_INIT functionELF [tid:199, /usr/lib/libboost_system.so.1.69.0]: Finished executing DT_INIT functionELF [tid:199, /usr/lib/libboost_system.so.1.69.0]: Executing 1 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libboost_system.so.1.69.0]: Finished executing 1 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libboost_chrono.so.1.69.0]: Executing DT_INIT functionELF [tid:199, /usr/lib/libboost_chrono.so.1.69.0]: Finished executing DT_INIT functionELF [tid:199, /usr/lib/libboost_chrono.so.1.69.0]: Executing 1 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libboost_chrono.so.1.69.0]: Finished executing 1 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libboost_timer.so.1.69.0]: Executing DT_INIT functionELF [tid:199, /usr/lib/libboost_timer.so.1.69.0]: Finished executing DT_INIT functionELF [tid:199, /usr/lib/libboost_timer.so.1.69.0]: Executing 3 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libboost_timer.so.1.69.0]: Finished executing 3 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Executing DT_INIT functionELF [tid:199, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Finished executing DT_INIT functionELF [tid:199, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Executing 19 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Finished executing 19 DT_INIT_ARRAYSZ functionsELF [tid:199, /tests/tst-bsd-tcp1.so]: Executing DT_INIT functionELF [tid:199, /tests/tst-bsd-tcp1.so]: Finished executing DT_INIT functionELF [tid:199, /tests/tst-bsd-tcp1.so]: Executing 2 DT_INIT_ARRAYSZ functionsELF [tid:199, /tests/tst-bsd-tcp1.so]: Finished executing 2 DT_INIT_ARRAYSZ functionsRunning 2 test cases...
ESC[1;32;49m*** No errors detectedESC[0;39;49mELF [tid:27, /tests/tst-bsd-tcp1.so]: Executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /tests/tst-bsd-tcp1.so]: Finished executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /tests/tst-bsd-tcp1.so]: Executing DT_FINI functionELF [tid:27, /tests/tst-bsd-tcp1.so]: unloading object dependent objects ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Finished executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Executing DT_FINI functionELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: unloading object dependent objects ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Finished executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Executing DT_FINI functionELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: unloading object dependent objects ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Finished executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Executing DT_FINI functionELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: unloading object dependent objects ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Finished executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Executing DT_FINI functionELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: unloading object dependent objects ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Finished executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Executing DT_FINI functionELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: unloading object dependent objects ELF [tid:27, /usr/lib/libgcc_s.so.1]: Executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /usr/lib/libgcc_s.so.1]: Finished executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /usr/lib/libgcc_s.so.1]: Executing DT_FINI functionELF [tid:27, /usr/lib/libgcc_s.so.1]: unloading object dependent objects ELF [tid:27, /libvdso.so]: unloading object dependent objects Cmdline: /tests/tst-rcu-hashtable.soELF [tid:27, /libvdso.so]: InstantiatedELF [tid:27, /libvdso.so]: The base set to: 0x0000000000063000 and end: 0x0000000000067030ELF [tid:27, /libvdso.so]: Loading segmentsELF [tid:27, /libvdso.so]: Loaded and mapped PT_LOAD segment at: 0x0000000000063000 of size: 0x1000ELF [tid:27, /libvdso.so]: Loaded and mapped PT_LOAD segment at: 0x0000000000064000 of size: 0x1000ELF [tid:27, /libvdso.so]: Loaded and mapped PT_LOAD segment at: 0x0000000000065000 of size: 0x1000ELF [tid:27, /libvdso.so]: Loaded and mapped PT_LOAD segment at: 0x0000000000066000 of size: 0x2000ELF [tid:27, /libvdso.so]: Relocated 3 PLT symbols in DT_JMPRELELF [tid:27, /libvdso.so]: versioned symbol tableELF [tid:27, /tests/tst-rcu-hashtable.so]: InstantiatedELF [tid:27, /tests/tst-rcu-hashtable.so]: The base set to: 0x0000000000068000 and end: 0x0000000000087400ELF [tid:27, /tests/tst-rcu-hashtable.so]: Loading segmentsELF [tid:27, /tests/tst-rcu-hashtable.so]: Loaded and mapped PT_LOAD segment at: 0x0000000000068000 of size: 0xa000ELF [tid:27, /tests/tst-rcu-hashtable.so]: Loaded and mapped PT_LOAD segment at: 0x0000000000072000 of size: 0xf000ELF [tid:27, /tests/tst-rcu-hashtable.so]: Loaded and mapped PT_LOAD segment at: 0x0000000000081000 of size: 0x4000ELF [tid:27, /tests/tst-rcu-hashtable.so]: Loaded and mapped PT_LOAD segment at: 0x0000000000086000 of size: 0x2000ELF [tid:27, /tests/tst-rcu-hashtable.so]: Loading DT_NEEDED object: libboost_unit_test_framework.so.1.69.0 ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: InstantiatedELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: The base set to: 0x0000000000088000 and end: 0x0000000000135768ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading segmentsELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000088000 of size: 0x1b000ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x00000000000a3000 of size: 0x6c000ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x000000000010f000 of size: 0x1f000ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x000000000012e000 of size: 0x6000ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading DT_NEEDED object: libboost_timer.so.1.69.0 ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: InstantiatedELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: The base set to: 0x0000000000136000 and end: 0x000000000013f0f0ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loading segmentsELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000136000 of size: 0x3000ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000139000 of size: 0x3000ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x000000000013c000 of size: 0x1000ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x000000000013e000 of size: 0x2000ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loading DT_NEEDED object: libboost_chrono.so.1.69.0 ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: InstantiatedELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: The base set to: 0x0000000000140000 and end: 0x000000000014e070ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loading segmentsELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000140000 of size: 0x5000ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000145000 of size: 0x5000ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x000000000014a000 of size: 0x2000ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x000000000014d000 of size: 0x2000ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loading DT_NEEDED object: libboost_system.so.1.69.0 ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: InstantiatedELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: The base set to: 0x000000000014f000 and end: 0x0000000000153008ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loading segmentsELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x000000000014f000 of size: 0x1000ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000150000 of size: 0x1000ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000151000 of size: 0x1000ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000152000 of size: 0x1000ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loading DT_NEEDED object: librt.so.1 ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Relocated 7 symbols in DT_RELAELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Relocated 1 PLT symbols in DT_JMPRELELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loading DT_NEEDED object: librt.so.1 ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loading DT_NEEDED object: libpthread.so.0 ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loading DT_NEEDED object: libstdc++.so.6 ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loading DT_NEEDED object: libgcc_s.so.1 ELF [tid:27, /usr/lib/libgcc_s.so.1]: InstantiatedELF [tid:27, /usr/lib/libgcc_s.so.1]: The base set to: 0x0000000000200000 and end: 0x0000000000415400ELF [tid:27, /usr/lib/libgcc_s.so.1]: Loading segmentsELF [tid:27, /usr/lib/libgcc_s.so.1]: Loaded and mapped PT_LOAD segment at: 0x0000000000200000 of size: 0x15000ELF [tid:27, /usr/lib/libgcc_s.so.1]: Loaded and mapped PT_LOAD segment at: 0x0000000000414000 of size: 0x2000ELF [tid:27, /usr/lib/libgcc_s.so.1]: Loading DT_NEEDED object: libc.so.6 ELF [tid:27, /usr/lib/libgcc_s.so.1]: Relocated 11 symbols in DT_RELAELF [tid:27, /usr/lib/libgcc_s.so.1]: Relocated 44 PLT symbols in DT_JMPRELELF [tid:27, /usr/lib/libgcc_s.so.1]: versioned symbol tableELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loading DT_NEEDED object: libc.so.6 ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Relocated 146 symbols in DT_RELAELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Relocated 46 PLT symbols in DT_JMPRELELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: versioned symbol tableELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loading DT_NEEDED object: libboost_system.so.1.69.0 ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loading DT_NEEDED object: librt.so.1 ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loading DT_NEEDED object: libstdc++.so.6 ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loading DT_NEEDED object: libgcc_s.so.1 ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loading DT_NEEDED object: libc.so.6 ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Relocated 70 symbols in DT_RELAELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Relocated 51 PLT symbols in DT_JMPRELELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: versioned symbol tableELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading DT_NEEDED object: libboost_system.so.1.69.0 ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading DT_NEEDED object: librt.so.1 ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading DT_NEEDED object: libstdc++.so.6 ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading DT_NEEDED object: libm.so.6 ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading DT_NEEDED object: libgcc_s.so.1 ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading DT_NEEDED object: libpthread.so.0 ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading DT_NEEDED object: libc.so.6 ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Relocated 1622 symbols in DT_RELAELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Relocated 293 PLT symbols in DT_JMPRELELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: versioned symbol tableELF [tid:27, /tests/tst-rcu-hashtable.so]: Loading DT_NEEDED object: libboost_filesystem.so.1.69.0 ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: InstantiatedELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: The base set to: 0x0000000000416000 and end: 0x00000000004321c0ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loading segmentsELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000416000 of size: 0x7000ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x000000000041d000 of size: 0xe000ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x000000000042b000 of size: 0x5000ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loaded and mapped PT_LOAD segment at: 0x0000000000431000 of size: 0x2000ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loading DT_NEEDED object: libboost_system.so.1.69.0 ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loading DT_NEEDED object: librt.so.1 ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loading DT_NEEDED object: libstdc++.so.6 ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loading DT_NEEDED object: libgcc_s.so.1 ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loading DT_NEEDED object: libpthread.so.0 ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loading DT_NEEDED object: libc.so.6 ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Relocated 133 symbols in DT_RELAELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Relocated 139 PLT symbols in DT_JMPRELELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: versioned symbol tableELF [tid:27, /tests/tst-rcu-hashtable.so]: Loading DT_NEEDED object: libstdc++.so.6 ELF [tid:27, /tests/tst-rcu-hashtable.so]: Loading DT_NEEDED object: libm.so.6 ELF [tid:27, /tests/tst-rcu-hashtable.so]: Loading DT_NEEDED object: libgcc_s.so.1 ELF [tid:27, /tests/tst-rcu-hashtable.so]: Loading DT_NEEDED object: libc.so.6 ELF [tid:27, /tests/tst-rcu-hashtable.so]: Relocated 290 symbols in DT_RELAELF [tid:27, /tests/tst-rcu-hashtable.so]: Relocated 111 PLT symbols in DT_JMPRELELF [tid:27, /tests/tst-rcu-hashtable.so]: versioned symbol tableELF [tid:199, /usr/lib/libboost_filesystem.so.1.69.0]: Executing DT_INIT functionELF [tid:199, /usr/lib/libboost_filesystem.so.1.69.0]: Finished executing DT_INIT functionELF [tid:199, /usr/lib/libboost_filesystem.so.1.69.0]: Executing 3 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libboost_filesystem.so.1.69.0]: Finished executing 3 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libgcc_s.so.1]: Executing DT_INIT functionELF [tid:199, /usr/lib/libgcc_s.so.1]: Finished executing DT_INIT functionELF [tid:199, /usr/lib/libgcc_s.so.1]: Executing 2 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libgcc_s.so.1]: Finished executing 2 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libboost_system.so.1.69.0]: Executing DT_INIT functionELF [tid:199, /usr/lib/libboost_system.so.1.69.0]: Finished executing DT_INIT functionELF [tid:199, /usr/lib/libboost_system.so.1.69.0]: Executing 1 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libboost_system.so.1.69.0]: Finished executing 1 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libboost_chrono.so.1.69.0]: Executing DT_INIT functionELF [tid:199, /usr/lib/libboost_chrono.so.1.69.0]: Finished executing DT_INIT functionELF [tid:199, /usr/lib/libboost_chrono.so.1.69.0]: Executing 1 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libboost_chrono.so.1.69.0]: Finished executing 1 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libboost_timer.so.1.69.0]: Executing DT_INIT functionELF [tid:199, /usr/lib/libboost_timer.so.1.69.0]: Finished executing DT_INIT functionELF [tid:199, /usr/lib/libboost_timer.so.1.69.0]: Executing 3 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libboost_timer.so.1.69.0]: Finished executing 3 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Executing DT_INIT functionELF [tid:199, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Finished executing DT_INIT functionELF [tid:199, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Executing 19 DT_INIT_ARRAYSZ functionsELF [tid:199, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Finished executing 19 DT_INIT_ARRAYSZ functionsELF [tid:199, /tests/tst-rcu-hashtable.so]: Executing DT_INIT functionELF [tid:199, /tests/tst-rcu-hashtable.so]: Finished executing DT_INIT functionELF [tid:199, /tests/tst-rcu-hashtable.so]: Executing 2 DT_INIT_ARRAYSZ functionsELF [tid:199, /tests/tst-rcu-hashtable.so]: Finished executing 2 DT_INIT_ARRAYSZ functionsRunning 2 test cases...
*** No errors detectedELF [tid:27, /tests/tst-rcu-hashtable.so]: Executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /tests/tst-rcu-hashtable.so]: Finished executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /tests/tst-rcu-hashtable.so]: Executing DT_FINI functionELF [tid:27, /tests/tst-rcu-hashtable.so]: unloading object dependent objects ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Finished executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Executing DT_FINI functionELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: unloading object dependent objects ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Finished executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Executing DT_FINI functionELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: unloading object dependent objects ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Finished executing 1 DT_FINI_ARRAYSZ functionsELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Executing DT_FINI functionELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: unloading object dependent objects ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Executing 1 DT_FINI_ARRAYSZ functionsAborted
[backtrace]0x000000004021981d <???+1075943453>0x0000000040463f7e <osv::handle_mmap_fault(unsigned long, int, exception_frame*)+30>0x000000004033da61 <mmu::vm_fault(unsigned long, exception_frame*)+385>0x000000004039dc2f <page_fault+143>0x000000004039ca86 <???+1077529222>0x000010000041f5f6 <???+4322806>0x0000000040352f33 <elf::object::run_fini_funcs()+211>0x0000000040354ab6 <elf::program::remove_object(elf::object*)+118>0x00000000403551f0 <???+1077236208>0x0000000040350cc4 <elf::object::unload_needed()+164>0x0000000040354f14 <elf::program::remove_object(elf::object*)+1236>0x00000000403551f0 <???+1077236208>0x000000004042c14f <osv::application::join()+623>0x000000004022a564 <do_main_thread(void*)+2644>0x000000004045fdb5 <???+1078328757>0x00000000403f9ce7 <thread_main_c+39>0x000000004039da02 <???+1077533186>I think I have solved the mystery. It looks like another bug in the dynamic linker. This time related to an order in which objects are unloaded and FINI* functions are executed.
As you can tell in the last test boost_filesystem, FINI function got executed after the libboost_unit_test_framework FINI function got called and unloaded. If you look at the first one, the order is opposite and that why it works.
I think we need to change unloading logic to first execute all FINI functions of all objects probably on the same thread that the INIT ones got executed and only then unload the objects.
--
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+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/osv-dev/861da7d5-7a27-4a0a-bb03-2d417c425e4b%40googlegroups.com.
osv load-elf /lib64/libboost_unit_test_framework.so.1.69.0 0x0000000000088000
(gdb) bt#0 0x00000000403a3cf2 in processor::cli_hlt () at arch/x64/processor.hh:247#1 arch::halt_no_interrupts () at arch/x64/arch.hh:48#2 osv::halt () at arch/x64/power.cc:26#3 0x0000000040239dae in abort (fmt=fmt@entry=0x4064155f "Aborted\n") at runtime.cc:132#4 0x00000000402028ab in abort () at runtime.cc:98#5 0x000000004021981e in osv::generate_signal (siginfo=..., ef=0xffff80000123c068) at libc/signal.cc:124#6 0x0000000040463f7f in osv::handle_mmap_fault (addr=<optimized out>, sig=<optimized out>, ef=<optimized out>) at libc/signal.cc:139#7 0x000000004033da62 in mmu::vm_fault (addr=17592187015168, addr@entry=17592187015648, ef=ef@entry=0xffff80000123c068) at core/mmu.cc:1337#8 0x000000004039dc30 in page_fault (ef=0xffff80000123c068) at arch/x64/mmu.cc:42#9 <signal handler called>#10 0x00001000000ed1e0 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() ()#11 0x000000004023a357 in __cxxabiv1::__cxa_finalize (dso=<optimized out>) at runtime.cc:183#12 0x000010000041f5f7 in __do_global_dtors_aux ()#13 0x00002000001008f0 in ?? ()#14 0x0000000040352f34 in elf::object::run_fini_funcs (this=0xffffa000015d0a00) at core/elf.cc:1105Backtrace stopped: frame did not save the PCTo unsubscribe from this group and stop receiving emails from it, send an email to osv...@googlegroups.com.
void object::unload_needed(){ _needed.clear(); _used_by_resolve_plt_got.clear();}diff --git a/include/osv/elf.hh b/include/osv/elf.hhindex 9a0415dc..ea597c08 100644--- a/include/osv/elf.hh+++ b/include/osv/elf.hh@@ -425,6 +425,7 @@ protected: std::unique_ptr<char[]> _section_names_cache; bool _is_executable; bool is_core();+ bool _finalized = false; std::unordered_map<std::string,void*> _cached_symbols; @@ -434,6 +435,7 @@ protected: std::vector<std::shared_ptr<elf::object>> _needed; std::unordered_set<std::shared_ptr<elf::object>> _used_by_resolve_plt_got; mutex _used_by_resolve_plt_got_mutex;+ std::vector<elf::object*> _fini_objects; // Allow objects on program->_modules to be usable for the threads // currently initializing them, but not yet visible for other threads. // This simplifies the code (the initializer can use the regular lookup@@ -457,6 +459,7 @@ private: bool visible(void) const; public: void setprivate(bool);+ void add_fini_object(elf::object *_obj) { _fini_objects.push_back(_obj); } }; class file : public object {
diff --git a/core/elf.cc b/core/elf.ccindex 909559a2..e4184e58 100644--- a/core/elf.cc+++ b/core/elf.cc@@ -1096,6 +1096,9 @@ void object::run_init_funcs(int argc, char** argv) // Run the object's static destructors or similar finalization void object::run_fini_funcs() {+ if (_finalized) {+ return;+ } if (dynamic_exists(DT_FINI_ARRAY)) { auto funcs = dynamic_ptr<void (*)()>(DT_FINI_ARRAY); auto nr = dynamic_val(DT_FINI_ARRAYSZ) / sizeof(*funcs);@@ -1113,6 +1116,11 @@ void object::run_fini_funcs() reinterpret_cast<void(*)()>(func)(); } }+ for (auto dep : _fini_objects) {+ dep->run_fini_funcs(); + }+ _finalized = true; } void* object::tls_addr()@@ -1397,8 +1405,14 @@ void program::init_library(int argc, char** argv) loaded_objects[i]->setprivate(true); } for (int i = size - 1; i >= 0; i--) { loaded_objects[i]->run_init_funcs(argc, argv); }+ if (size > 0) {+ for (unsigned i = 1; i < size; i++) {+ loaded_objects[0]->add_fini_object(loaded_objects[i].get());+ }+ } for (unsigned i = 0; i < size; i++) { loaded_objects[i]->setprivate(false); }diff --git a/core/elf.cc b/core/elf.ccindex 9a26a2e7..37e72519 100644--- a/core/elf.cc+++ b/core/elf.cc@@ -1021,8 +1021,10 @@ void object::load_needed(std::vector<std::shared_ptr<object>>& loaded_objects) void object::unload_needed() {- _needed.clear(); _used_by_resolve_plt_got.clear();+ while (!_needed.empty()) {+ _needed.pop_back();+ } } ulong object::get_tls_size() $(boost-tests:%=$(out)/tests/%): LIBS += \- -lboost_unit_test_framework \- -lboost_filesystem+ -lboost_filesystem \+ -lboost_unit_test_framework