Commit Graph

10 Commits (44d82456057669bae3c03196fe0afd7e728d3e60)

Author SHA1 Message Date
Evan Overman 7c28ffc856
add indefinite `sleep()` function to `SleeperThread` 2023-09-18 14:55:50 -07:00
Patrick Nicolas f62b3d0e9d Ensure signal is disconnected in destructor 2023-07-16 23:29:28 +02:00
Patrick Nicolas 3c9cbc99d7 Wake all sleeping threads when leaving suspend
std::condition_variable::wait_for does not count time spent in sleep
mode, resulting in longer than expected waits.
2023-06-07 10:17:42 +02:00
Alex f2fcadbf62 refactor: lint 2022-04-06 08:37:19 +02:00
Aleksei Bavshin 5da268077c
fix(util): protect std::condition_variable methods from pthread_cancel
The changes in GCC 11.x made `std::condition_variable` implementation
internals `noexcept`. `noexcept` is known to interact particularly bad
with `pthread_cancel`, i.e. `__cxxabiv1::__force_unwind` passing through
the `noexcept` call stack frame causes a `std::terminate` call and
immediate termination of the program

Digging through the GCC ML archives[1] lead me to the idea of patching
this with a few pthread_setcancelstate's. As bad as the solution is, it
seems to be the best we can do within C++17 limits and without major
rework.

[1]: https://gcc.gnu.org/legacy-ml/gcc/2017-08/msg00156.html
2021-06-12 12:56:44 -07:00
Alex 6e7f22ac3a fix: cancel thread and fix window close 2020-05-27 09:10:38 +02:00
Alex 564fdcb369 fix(custom): exit status 2019-06-11 22:09:47 +02:00
Alex 6ed8f94dab refactor: format code 2019-04-18 17:52:00 +02:00
hoellen 38fa7ceab1 add signalhandler for module update 2019-03-18 18:46:44 +01:00
Alexis 399f61df98 refactor: proper modules destruction 2019-01-13 22:22:22 +01:00