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. And it just happens to be with the boost 
based unit tests that depend on more libraries with 1.69 version of boost.

And some boost tests pass just fine like this one:
Cmdline: /tests/tst-bsd-tcp1.so
ELF [tid:27, /libvdso.so]: Instantiated
ELF [tid:27, /libvdso.so]: The base set to: 0x0000000000063000 and end: 
0x0000000000067030
ELF [tid:27, /libvdso.so]: Loading segments
ELF [tid:27, /libvdso.so]: Loaded and mapped PT_LOAD segment at: 
0x0000000000063000 of size: 0x1000
ELF [tid:27, /libvdso.so]: Loaded and mapped PT_LOAD segment at: 
0x0000000000064000 of size: 0x1000
ELF [tid:27, /libvdso.so]: Loaded and mapped PT_LOAD segment at: 
0x0000000000065000 of size: 0x1000
ELF [tid:27, /libvdso.so]: Loaded and mapped PT_LOAD segment at: 
0x0000000000066000 of size: 0x2000
ELF [tid:27, /libvdso.so]: Relocated 3 PLT symbols in DT_JMPREL
ELF [tid:27, /libvdso.so]: versioned symbol table
ELF [tid:27, /tests/tst-bsd-tcp1.so]: Instantiated
ELF [tid:27, /tests/tst-bsd-tcp1.so]: The base set to: 0x0000000000068000 
and end: 0x0000000000091630
ELF [tid:27, /tests/tst-bsd-tcp1.so]: Loading segments
ELF [tid:27, /tests/tst-bsd-tcp1.so]: Loaded and mapped PT_LOAD segment at: 
0x0000000000068000 of size: 0x11000
ELF [tid:27, /tests/tst-bsd-tcp1.so]: Loaded and mapped PT_LOAD segment at: 
0x0000000000079000 of size: 0x11000
ELF [tid:27, /tests/tst-bsd-tcp1.so]: Loaded and mapped PT_LOAD segment at: 
0x000000000008a000 of size: 0x5000
ELF [tid:27, /tests/tst-bsd-tcp1.so]: Loaded and mapped PT_LOAD segment at: 
0x000000000008f000 of size: 0x3000
ELF [tid:27, /tests/tst-bsd-tcp1.so]: Found TLS segment at 
0x000000000008f6a8 of aligned size: 8
ELF [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]: Instantiated
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: The base set 
to: 0x0000000000092000 and end: 0x000000000013f768
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading 
segments
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loaded and 
mapped PT_LOAD segment at: 0x0000000000092000 of size: 0x1b000
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loaded and 
mapped PT_LOAD segment at: 0x00000000000ad000 of size: 0x6c000
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loaded and 
mapped PT_LOAD segment at: 0x0000000000119000 of size: 0x1f000
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loaded and 
mapped PT_LOAD segment at: 0x0000000000138000 of size: 0x6000
ELF [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]: Instantiated
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: The base set to: 
0x0000000000140000 and end: 0x00000000001490f0
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loading segments
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x0000000000140000 of size: 0x3000
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x0000000000143000 of size: 0x3000
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x0000000000146000 of size: 0x1000
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x0000000000148000 of size: 0x2000
ELF [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]: Instantiated
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: The base set to: 
0x000000000014a000 and end: 0x0000000000158070
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loading segments
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x000000000014a000 of size: 0x5000
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x000000000014f000 of size: 0x5000
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x0000000000154000 of size: 0x2000
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x0000000000157000 of size: 0x2000
ELF [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]: Instantiated
ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: The base set to: 
0x0000000000159000 and end: 0x000000000015d008
ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loading segments
ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x0000000000159000 of size: 0x1000
ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x000000000015a000 of size: 0x1000
ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x000000000015b000 of size: 0x1000
ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x000000000015c000 of size: 0x1000
ELF [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_RELA
ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Relocated 1 PLT symbols 
in DT_JMPREL
ELF [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]: Instantiated
ELF [tid:27, /usr/lib/libgcc_s.so.1]: The base set to: 0x0000000000200000 
and end: 0x0000000000415400
ELF [tid:27, /usr/lib/libgcc_s.so.1]: Loading segments
ELF [tid:27, /usr/lib/libgcc_s.so.1]: Loaded and mapped PT_LOAD segment at: 
0x0000000000200000 of size: 0x15000
ELF [tid:27, /usr/lib/libgcc_s.so.1]: Loaded and mapped PT_LOAD segment at: 
0x0000000000414000 of size: 0x2000
ELF [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_RELA
ELF [tid:27, /usr/lib/libgcc_s.so.1]: Relocated 44 PLT symbols in DT_JMPREL
ELF [tid:27, /usr/lib/libgcc_s.so.1]: versioned symbol table
ELF [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_RELA
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Relocated 46 PLT symbols 
in DT_JMPREL
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: versioned symbol table
ELF [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_RELA
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Relocated 51 PLT symbols 
in DT_JMPREL
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: versioned symbol table
ELF [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_RELA
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Relocated 
293 PLT symbols in DT_JMPREL
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: versioned 
symbol table
ELF [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]: Instantiated
ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: The base set to: 
0x0000000000416000 and end: 0x00000000004321c0
ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loading segments
ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loaded and mapped 
PT_LOAD segment at: 0x0000000000416000 of size: 0x7000
ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loaded and mapped 
PT_LOAD segment at: 0x000000000041d000 of size: 0xe000
ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loaded and mapped 
PT_LOAD segment at: 0x000000000042b000 of size: 0x5000
ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loaded and mapped 
PT_LOAD segment at: 0x0000000000431000 of size: 0x2000
ELF [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_RELA
ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Relocated 139 PLT 
symbols in DT_JMPREL
ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: versioned symbol table
ELF [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_RELA
ELF [tid:27, /tests/tst-bsd-tcp1.so]: Relocated 143 PLT symbols in DT_JMPREL
ELF [tid:27, /tests/tst-bsd-tcp1.so]: versioned symbol table
ELF [tid:199, /usr/lib/libboost_filesystem.so.1.69.0]: Executing DT_INIT 
function
ELF [tid:199, /usr/lib/libboost_filesystem.so.1.69.0]: Finished executing 
DT_INIT function
ELF [tid:199, /usr/lib/libboost_filesystem.so.1.69.0]: Executing 3 
DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libboost_filesystem.so.1.69.0]: Finished executing 3 
DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libgcc_s.so.1]: Executing DT_INIT function
ELF [tid:199, /usr/lib/libgcc_s.so.1]: Finished executing DT_INIT function
ELF [tid:199, /usr/lib/libgcc_s.so.1]: Executing 2 DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libgcc_s.so.1]: Finished executing 2 DT_INIT_ARRAYSZ 
functions
ELF [tid:199, /usr/lib/libboost_system.so.1.69.0]: Executing DT_INIT 
function
ELF [tid:199, /usr/lib/libboost_system.so.1.69.0]: Finished executing 
DT_INIT function
ELF [tid:199, /usr/lib/libboost_system.so.1.69.0]: Executing 1 
DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libboost_system.so.1.69.0]: Finished executing 1 
DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libboost_chrono.so.1.69.0]: Executing DT_INIT 
function
ELF [tid:199, /usr/lib/libboost_chrono.so.1.69.0]: Finished executing 
DT_INIT function
ELF [tid:199, /usr/lib/libboost_chrono.so.1.69.0]: Executing 1 
DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libboost_chrono.so.1.69.0]: Finished executing 1 
DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libboost_timer.so.1.69.0]: Executing DT_INIT function
ELF [tid:199, /usr/lib/libboost_timer.so.1.69.0]: Finished executing 
DT_INIT function
ELF [tid:199, /usr/lib/libboost_timer.so.1.69.0]: Executing 3 
DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libboost_timer.so.1.69.0]: Finished executing 3 
DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Executing 
DT_INIT function
ELF [tid:199, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Finished 
executing DT_INIT function
ELF [tid:199, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Executing 
19 DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Finished 
executing 19 DT_INIT_ARRAYSZ functions
ELF [tid:199, /tests/tst-bsd-tcp1.so]: Executing DT_INIT function
ELF [tid:199, /tests/tst-bsd-tcp1.so]: Finished executing DT_INIT function
ELF [tid:199, /tests/tst-bsd-tcp1.so]: Executing 2 DT_INIT_ARRAYSZ functions
ELF [tid:199, /tests/tst-bsd-tcp1.so]: Finished executing 2 DT_INIT_ARRAYSZ 
functions
Running 2 test cases...

ESC[1;32;49m*** No errors detected
ESC[0;39;49mELF [tid:27, /tests/tst-bsd-tcp1.so]: Executing 1 
DT_FINI_ARRAYSZ functions
ELF [tid:27, /tests/tst-bsd-tcp1.so]: Finished executing 1 DT_FINI_ARRAYSZ 
functions
ELF [tid:27, /tests/tst-bsd-tcp1.so]: Executing DT_FINI function
ELF [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 functions*
*ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Finished executing 1 
DT_FINI_ARRAYSZ functions*
*ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Executing DT_FINI 
function*
*ELF [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 functions
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Finished 
executing 1 DT_FINI_ARRAYSZ functions
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Executing 
DT_FINI function
ELF [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 functions
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Finished executing 1 
DT_FINI_ARRAYSZ functions
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Executing DT_FINI function
ELF [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 functions
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Finished executing 1 
DT_FINI_ARRAYSZ functions
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Executing DT_FINI function
ELF [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 functions
ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Finished executing 1 
DT_FINI_ARRAYSZ functions
ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Executing DT_FINI function
ELF [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 functions
ELF [tid:27, /usr/lib/libgcc_s.so.1]: Finished executing 1 DT_FINI_ARRAYSZ 
functions
ELF [tid:27, /usr/lib/libgcc_s.so.1]: Executing DT_FINI function
ELF [tid:27, /usr/lib/libgcc_s.so.1]: unloading object dependent objects 
ELF [tid:27, /libvdso.so]: unloading object dependent objects 

And here is the that fails:
Cmdline: /tests/tst-rcu-hashtable.so
ELF [tid:27, /libvdso.so]: Instantiated
ELF [tid:27, /libvdso.so]: The base set to: 0x0000000000063000 and end: 
0x0000000000067030
ELF [tid:27, /libvdso.so]: Loading segments
ELF [tid:27, /libvdso.so]: Loaded and mapped PT_LOAD segment at: 
0x0000000000063000 of size: 0x1000
ELF [tid:27, /libvdso.so]: Loaded and mapped PT_LOAD segment at: 
0x0000000000064000 of size: 0x1000
ELF [tid:27, /libvdso.so]: Loaded and mapped PT_LOAD segment at: 
0x0000000000065000 of size: 0x1000
ELF [tid:27, /libvdso.so]: Loaded and mapped PT_LOAD segment at: 
0x0000000000066000 of size: 0x2000
ELF [tid:27, /libvdso.so]: Relocated 3 PLT symbols in DT_JMPREL
ELF [tid:27, /libvdso.so]: versioned symbol table
ELF [tid:27, /tests/tst-rcu-hashtable.so]: Instantiated
ELF [tid:27, /tests/tst-rcu-hashtable.so]: The base set to: 
0x0000000000068000 and end: 0x0000000000087400
ELF [tid:27, /tests/tst-rcu-hashtable.so]: Loading segments
ELF [tid:27, /tests/tst-rcu-hashtable.so]: Loaded and mapped PT_LOAD 
segment at: 0x0000000000068000 of size: 0xa000
ELF [tid:27, /tests/tst-rcu-hashtable.so]: Loaded and mapped PT_LOAD 
segment at: 0x0000000000072000 of size: 0xf000
ELF [tid:27, /tests/tst-rcu-hashtable.so]: Loaded and mapped PT_LOAD 
segment at: 0x0000000000081000 of size: 0x4000
ELF [tid:27, /tests/tst-rcu-hashtable.so]: Loaded and mapped PT_LOAD 
segment at: 0x0000000000086000 of size: 0x2000
ELF [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]: Instantiated
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: The base set 
to: 0x0000000000088000 and end: 0x0000000000135768
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loading 
segments
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loaded and 
mapped PT_LOAD segment at: 0x0000000000088000 of size: 0x1b000
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loaded and 
mapped PT_LOAD segment at: 0x00000000000a3000 of size: 0x6c000
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loaded and 
mapped PT_LOAD segment at: 0x000000000010f000 of size: 0x1f000
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Loaded and 
mapped PT_LOAD segment at: 0x000000000012e000 of size: 0x6000
ELF [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]: Instantiated
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: The base set to: 
0x0000000000136000 and end: 0x000000000013f0f0
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loading segments
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x0000000000136000 of size: 0x3000
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x0000000000139000 of size: 0x3000
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x000000000013c000 of size: 0x1000
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x000000000013e000 of size: 0x2000
ELF [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]: Instantiated
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: The base set to: 
0x0000000000140000 and end: 0x000000000014e070
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loading segments
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x0000000000140000 of size: 0x5000
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x0000000000145000 of size: 0x5000
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x000000000014a000 of size: 0x2000
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x000000000014d000 of size: 0x2000
ELF [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]: Instantiated
ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: The base set to: 
0x000000000014f000 and end: 0x0000000000153008
ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loading segments
ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x000000000014f000 of size: 0x1000
ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x0000000000150000 of size: 0x1000
ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x0000000000151000 of size: 0x1000
ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Loaded and mapped PT_LOAD 
segment at: 0x0000000000152000 of size: 0x1000
ELF [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_RELA
ELF [tid:27, /usr/lib/libboost_system.so.1.69.0]: Relocated 1 PLT symbols 
in DT_JMPREL
ELF [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]: Instantiated
ELF [tid:27, /usr/lib/libgcc_s.so.1]: The base set to: 0x0000000000200000 
and end: 0x0000000000415400
ELF [tid:27, /usr/lib/libgcc_s.so.1]: Loading segments
ELF [tid:27, /usr/lib/libgcc_s.so.1]: Loaded and mapped PT_LOAD segment at: 
0x0000000000200000 of size: 0x15000
ELF [tid:27, /usr/lib/libgcc_s.so.1]: Loaded and mapped PT_LOAD segment at: 
0x0000000000414000 of size: 0x2000
ELF [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_RELA
ELF [tid:27, /usr/lib/libgcc_s.so.1]: Relocated 44 PLT symbols in DT_JMPREL
ELF [tid:27, /usr/lib/libgcc_s.so.1]: versioned symbol table
ELF [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_RELA
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Relocated 46 PLT symbols 
in DT_JMPREL
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: versioned symbol table
ELF [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_RELA
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Relocated 51 PLT symbols 
in DT_JMPREL
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: versioned symbol table
ELF [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_RELA
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Relocated 
293 PLT symbols in DT_JMPREL
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: versioned 
symbol table
ELF [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]: Instantiated
ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: The base set to: 
0x0000000000416000 and end: 0x00000000004321c0
ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loading segments
ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loaded and mapped 
PT_LOAD segment at: 0x0000000000416000 of size: 0x7000
ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loaded and mapped 
PT_LOAD segment at: 0x000000000041d000 of size: 0xe000
ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loaded and mapped 
PT_LOAD segment at: 0x000000000042b000 of size: 0x5000
ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Loaded and mapped 
PT_LOAD segment at: 0x0000000000431000 of size: 0x2000
ELF [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_RELA
ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: Relocated 139 PLT 
symbols in DT_JMPREL
ELF [tid:27, /usr/lib/libboost_filesystem.so.1.69.0]: versioned symbol table
ELF [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_RELA
ELF [tid:27, /tests/tst-rcu-hashtable.so]: Relocated 111 PLT symbols in 
DT_JMPREL
ELF [tid:27, /tests/tst-rcu-hashtable.so]: versioned symbol table
ELF [tid:199, /usr/lib/libboost_filesystem.so.1.69.0]: Executing DT_INIT 
function
ELF [tid:199, /usr/lib/libboost_filesystem.so.1.69.0]: Finished executing 
DT_INIT function
ELF [tid:199, /usr/lib/libboost_filesystem.so.1.69.0]: Executing 3 
DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libboost_filesystem.so.1.69.0]: Finished executing 3 
DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libgcc_s.so.1]: Executing DT_INIT function
ELF [tid:199, /usr/lib/libgcc_s.so.1]: Finished executing DT_INIT function
ELF [tid:199, /usr/lib/libgcc_s.so.1]: Executing 2 DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libgcc_s.so.1]: Finished executing 2 DT_INIT_ARRAYSZ 
functions
ELF [tid:199, /usr/lib/libboost_system.so.1.69.0]: Executing DT_INIT 
function
ELF [tid:199, /usr/lib/libboost_system.so.1.69.0]: Finished executing 
DT_INIT function
ELF [tid:199, /usr/lib/libboost_system.so.1.69.0]: Executing 1 
DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libboost_system.so.1.69.0]: Finished executing 1 
DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libboost_chrono.so.1.69.0]: Executing DT_INIT 
function
ELF [tid:199, /usr/lib/libboost_chrono.so.1.69.0]: Finished executing 
DT_INIT function
ELF [tid:199, /usr/lib/libboost_chrono.so.1.69.0]: Executing 1 
DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libboost_chrono.so.1.69.0]: Finished executing 1 
DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libboost_timer.so.1.69.0]: Executing DT_INIT function
ELF [tid:199, /usr/lib/libboost_timer.so.1.69.0]: Finished executing 
DT_INIT function
ELF [tid:199, /usr/lib/libboost_timer.so.1.69.0]: Executing 3 
DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libboost_timer.so.1.69.0]: Finished executing 3 
DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Executing 
DT_INIT function
ELF [tid:199, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Finished 
executing DT_INIT function
ELF [tid:199, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Executing 
19 DT_INIT_ARRAYSZ functions
ELF [tid:199, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Finished 
executing 19 DT_INIT_ARRAYSZ functions
ELF [tid:199, /tests/tst-rcu-hashtable.so]: Executing DT_INIT function
ELF [tid:199, /tests/tst-rcu-hashtable.so]: Finished executing DT_INIT 
function
ELF [tid:199, /tests/tst-rcu-hashtable.so]: Executing 2 DT_INIT_ARRAYSZ 
functions
ELF [tid:199, /tests/tst-rcu-hashtable.so]: Finished executing 2 
DT_INIT_ARRAYSZ functions
Running 2 test cases...

*** No errors detected
ELF [tid:27, /tests/tst-rcu-hashtable.so]: Executing 1 DT_FINI_ARRAYSZ 
functions
ELF [tid:27, /tests/tst-rcu-hashtable.so]: Finished executing 1 
DT_FINI_ARRAYSZ functions
ELF [tid:27, /tests/tst-rcu-hashtable.so]: Executing DT_FINI function
ELF [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 functions
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Finished 
executing 1 DT_FINI_ARRAYSZ functions
ELF [tid:27, /usr/lib/libboost_unit_test_framework.so.1.69.0]: Executing 
DT_FINI function
ELF [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 functions
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Finished executing 1 
DT_FINI_ARRAYSZ functions
ELF [tid:27, /usr/lib/libboost_timer.so.1.69.0]: Executing DT_FINI function
ELF [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 functions
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Finished executing 1 
DT_FINI_ARRAYSZ functions
ELF [tid:27, /usr/lib/libboost_chrono.so.1.69.0]: Executing DT_FINI function
ELF [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 functions*
Aborted

[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>

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.

What do you think?

On Thursday, November 28, 2019 at 3:19:57 PM UTC-5, Nadav Har'El wrote:
>
> On Thu, Nov 28, 2019 at 10:04 PM Waldek Kozaczuk <[email protected] 
> <javascript:>> wrote:
>
>>
>>  
>>>>
>>>>
>>>> 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?
>>
>
> This line was needed because we try to combine newly combined test code 
> and some super-antique version of Boost from external/.
> It is explained in commit 6a3bff38a281e65ee715bab4fadef63e0918f7d3. You 
> shouldn't need it if you stop using the antique boost.
>  
>
>> BTW I also now noticed this linker warning (not sure if related):
>>   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 3
>> strip: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.elf
>>
>>
> I noticed this too a few days ago, but didn't spend any time to chase it.
>  
>
>>  
>> 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: 
>>
>
> I'm still guessing the address 0x00001000000ed1e0 is in the actual test 
> itself, not any of the libraries.
> It is possible that "osv syms" gets confused because this bug happens 
> while the test executable is being unloaded, so maybe it's no longer in the 
> list. You can comment out the code that removes the library from the list 
> that "osv syms" uses, and then maybe gdb will be able to know about it.
>
>  
>
>> 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.
>>
>
> The reason why we have this file is explained in commit 
> be565320c082c00069614c850d29b42831b3dea6
>  
>
>> Changing it to pull from host creates other issues which I will send 
>> email about.  
>>
>
> :-(
>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/osv-dev/861da7d5-7a27-4a0a-bb03-2d417c425e4b%40googlegroups.com.

Reply via email to