Skip to content

Commit

Permalink
More clarifications for async-signal-safety (refs #131) (#156)
Browse files Browse the repository at this point in the history
  • Loading branch information
apolukhin authored Mar 4, 2024
1 parent 824f0c0 commit a33e198
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions doc/stacktrace.qbk
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,7 @@ There are multiple ways to deal with that issue if you distribute PDB files alon

[section Theoretical async signal safety]

In theory, walking the stack without decoding should be async signal safe.
In theory, walking the stack without decoding and demangling should be async signal safe.

In practice, it is not:

Expand All @@ -377,7 +377,9 @@ In practice, it is not:
Theoretically this could be worked around by bypassing the mutex locking
in C++-runtime at exception throw
([@https://github.com/userver-framework/userver/blob/4246909c99506d3ab34bd130a5154b4acc8e87de/core/src/engine/task/exception_hacks.cpp#L241-L244 sample implementation]
in the 🐙 userver framework).
in the 🐙 userver framework), or by using a very modern runtime
(glibc-2.35+ with [@https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71744#c32 modern]
libgcc or [@https://reviews.llvm.org/D130668 modern] LLVM's libunwind).
* `-fomit-frame-pointer` like flags add additional complexity to the stack
walking implementation, which may also negatively affect the signal safety.

Expand Down

0 comments on commit a33e198

Please sign in to comment.