]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
build, crimson/osd: do not let Seastar to interfere with ELF's program headers.
authorRadosław Zarzyński <rzarzyns@redhat.com>
Tue, 15 Mar 2022 14:33:41 +0000 (15:33 +0100)
committerRadosław Zarzyński <rzarzyns@redhat.com>
Wed, 23 Mar 2022 21:10:45 +0000 (22:10 +0100)
commit1c6841e6fdc4463167a1b227442dceb98828396b
treea73540ed0b0a9d80880b941020735a78d86ad58c
parentfe41f0bf7dd609a2fd876e5912b8d69b47612b23
build, crimson/osd: do not let Seastar to interfere with ELF's program headers.

For the sake of avoiding locking on the `__cxa_throw` paths, Seastar
hijacks `dl_iterate_phdr` of the dynamic linker. Unfortunately, this
has a nasty side effect: it makes impossible to catch an exception in
in a plugin (a DSO loaded via the `dlopen()` machinery).

For mote details please consult:
  * https://gist.github.com/rzarzynski/3abe9ed6b50cfa1893d34988e1628bfc,
  * `seastar/src/core/exception_hacks.cc`.

This patch deals with the problem by simply disabling the problematic
workaround which could be iatrogenic too. If that would be the case,
we can consider:

  * preloading all our Ceph Classes before reaching `smp::configure()`,
  * statically linking them.

Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
src/CMakeLists.txt