The signatures of destructors for Logger object were same indeed.
How it was:
[root@baz ~]# nm -aC /opt/siebel/sba81/siebsrvr/mw/lib/libtl.so| grep Logger
0001a0b0 W Logger::~Logger()
0001a070 W Logger::~Logger()
[root@baz ~]# nm -aC /opt/siebel/sba81/siebsrvr/lib/libfoo.so| grep Logger
000251b8 T Logger::~Logger()
000257ac T Logger::~Logger()
00025d90 T Logger::~Logger()
How it now:
[root@baz ~]# nm -aC /opt/siebel/sba81/siebsrvr/lib/libfoo.so| grep Logger
00025288 T Foo::Logger::~Logger()
0002587c T Foo::Logger::~Logger()
00025e60 T Foo::Logger::~Logger()
I've added namespace to my library, and it solved this problem.