The key difference that --enable-cxx-exceptions makes is that it results
in libunwind having _Unwind_RaiseException (and likely other functions),
which gets called during a C++ throw by __cxa_throw. Without libunwind,
this symbol is provided by libgcc_s, whose implementation works
correctly. For whatever reason, the one in libunwind, on aarch64, does
not succeed in finding a handler and instead calls terminate (which is
normal when there is no handler for an exception).

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to libunwind in Ubuntu.
https://bugs.launchpad.net/bugs/1999104

Title:
  libunwind causes crashes on arm64

Status in libunwind package in Ubuntu:
  New

Bug description:
  There is a bug in libunwind in both 18.04 and 20.04 on arm64 where
  when linked with libunwind instead of catching an exception, the
  program crashes. This was first seen on mcrouter, but attached is a
  small reproducer where `main_unwind` will crash. The libunwind
  shipping with 22.04 doesn't appear to have this problem, nor do
  unmodified upstream versions (including the 1.2.1 which is the 18.04
  and 20.04 version).

  Attached is a small reproducer that demonstrates the problem.

  Ubuntu 22.04:
  ```
  $ ./main
  int throws lib
  int caught main
  $ ./main_unwind
  int throws lib
  int caught main
  ```

  Ubuntu 20.04:
  ```
  $ ./main
  int throws lib
  int caught main
  $ ./main_unwind
  terminate called after throwing an instance of 'int'
  terminate called recursively
  Aborted (core dumped)
  ```

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/libunwind/+bug/1999104/+subscriptions


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to