«Вкратце» проблема описана здесь: http://stackoverflow.com/questions/8851931/call-to-virtual-method-crashes-whe...
В общем если в lib1 и lib2 есть классы с одинаковым именем ClassName, но с разным набором виртуальных функций, то (я так думаю) возможна ситуация, когда используется неверная vtable. Конкретно, segfault при вызове методов при приведении к базовому классу, но, полагаю, возможны варианты.
Честно говоря, не думал, что vtable рассматривается как статическая переменная и линкуется по таким же правилам, т.е. если одинаковое имя, будет только одна копия (а код, рассчитывающий на другую, получит крэш).
Вопрос такой, как это задетектить и/или избежать этого? Ну и вообще, кто что умного скажет. Я пока в ах.. ахреневании.