C ++ - Ausnahmen und der ELF-Abschnitt .eh_frame

Ist es so, dass das Fehlen oder der Schaden des ELF-Abschnitts .eh_frame die Ursache für Ausnahmen in meinem C ++ - Code ist, die nicht mehr funktionieren? Jede Ausnahme, die zuvor erfolgreich abgefangen wurde, ruft jetzt std :: terminate () auf.

Meine Situation

ie gemeinsam genutzte Bibliothek von @My zzz.so hat Try-Catch-Blöcke:

try {
    throw Exc();
} catch (const Exc &e) {
    LOG("ok " << e.what());
} catch (...) {
    LOG("all");
}

Eine ausführbare Datei, die die zzz.so lädt (mit ldopen). Es ruft eine Funktion in der zzz.so

Alle in zzz.so ausgelösten Ausnahmen werden erfolgreich in zzz.so abgefangen und in meine Protokolldatei geschriebenEs gibt eine andere aaa.so, die in eine andere Binärdatei geladen wird. Das eine andere aaa.so lädt meine zzz.so.Alle Ausnahmen in zzz.so führen zum Aufruf von std :: terminate ().

Wie ist das möglich

aktualisiere

Ich weiß nicht, wie das noch möglich ist, aber Clang 3.3 (FreeBSD-Clang-Version 3.3 (tags / RELEASE_33 / final 183502) 20130610) hat das Problem gelöst.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage