** Patch added: "boost-context-0921b9fd5c.patch"
   
https://bugs.launchpad.net/ubuntu/+source/boost1.90/+bug/2173538/+attachment/6015426/+files/boost-context-0921b9fd5c.patch

** Description changed:

- 1) Ubuntu 26.04.1 LTS (resolute), amd64 and arm64
+ 1) The release of Ubuntu you are using:
+ Ubuntu 26.04.1 LTS (resolute), amd64 and arm64
  
- 2) libboost1.90-dev / libboost-context1.90-dev 1.90.0-6ubuntu1, g++
- 15.2.0-16ubuntu1
+ 2) The version of the package you are using:
+ libboost1.90-dev / libboost-context1.90-dev 1.90.0-6ubuntu1, g++ 
15.2.0-16ubuntu1
  
- 3) An exception caught inside a boost::asio::spawn coroutine should stay
- the current exception, so `throw;` rethrows it.
+ 3) What you expected to happen:
+ An exception caught inside a boost::asio::spawn coroutine should stay the 
current exception, so `throw;` rethrows it.
  
- 4) When coroutines move between threads, the exception state of another
- thread gets overwritten. `throw;` inside a catch block then aborts with
- "terminate called without an active exception":
+ 4) What happened instead:
+ When coroutines move between threads, the exception state of another thread 
gets overwritten. `throw;` inside a catch block then aborts with "terminate 
called without an active exception":
  
  g++ -O2 -std=c++17 -pthread -o repro repro.cpp -lboost_context
  ./repro rethrow 10    # aborts within milliseconds; with the patch it runs 10 
s and exits 0
  
  This is https://github.com/boostorg/context/issues/323.
  `manage_exception_state` in boost/context/fiber_fcontext.hpp lost its
  `BOOST_NOINLINE`, so gcc caches the TLS address from
  `__cxa_get_globals()` across the fiber switch. It is fixed upstream in
  Boost 1.92 by commit 0921b9fd5c
  (https://github.com/boostorg/context/pull/331). The patch is attached;
  it applies unchanged to 1.90.0-6ubuntu1.
  
  We hit this with Icinga 2 (from packages.icinga.com) on 26.04: about 1
  in 240 cancelled connections crashed an I/O thread. After rebuilding the
  same sources against the patched header, we saw 0 in 12,675.
  radosgw/librgw2 from ceph show the same code pattern. Since the bug is
  in a header, affected packages need a rebuild after the fix.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2173538

Title:
  boost1.90: fibers clobber the libstdc++ exception state of another
  thread (upstream boostorg/context#323)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/boost1.90/+bug/2173538/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to