C ++ исключения и раздел ELF .eh_frame
Не является ли отсутствие или повреждение раздела ELF .eh_frame причиной исключений в моем коде C ++, который перестал работать? Любое исключение, которое было успешно перехвачено, теперь вызывает std :: terminate ().
Моя ситуация:
Моя общая библиотека zzz.so имеет блоки try-catch:
try {
throw Exc();
} catch (const Exc &e) {
LOG("ok " << e.what());
} catch (...) {
LOG("all");
}
Исполняемый файл, который загружает zzz.so (используя ldopen). Это вызывает функцию в zzz.so
Все исключения, сгенерированные в zzz.so, успешно перехвачены в zzz.so и помещены в мой лог-файл.Существует другой файл aaa.so, который загружается в другой двоичный файл. Это другой aaa.so загружает мой zzz.so.Все те же исключения, сгенерированные в zzz.so, приводят к вызову std :: terminate ().Как это возможно?
Обновить
Я не знаю, КАК это возможно, но Clang 3.3 (FreeBSD clang версии 3.3 (tags / RELEASE_33 / final 183502) 20130610) решил проблему.