4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-02-23 17:19:33 +08:00
Corinna Vinschen a02144808c Cygwin: don't wait infinitely on a pthread cancel event
Starting with commit 42faed412857 ("* thread.h (class pthread): Add bool
member canceled."), pthread::testcancel waits infinitely on cancel_event
after it checked if the canceled variable is set.  However, this might
introduce a deadlock, if the thread calling pthread_cancel is terminated
after setting canceled to true, but before calling SetEvent on cancel_event.

In fact, it's not at all necessary to wait infinitely.  By definition,
the thread is only canceled if cancel_event is set.  The canceled
variable is just a helper to speed up code.  We can safely assume that
the thread hasn't been canceled yet, if canceled is set, but cancel_event
isn't.

Fixes: 42faed412857 ("* thread.h (class pthread): Add bool member canceled.")
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2023-07-18 22:21:36 +02:00
..
2022-08-04 20:54:09 +02:00
2021-11-10 20:16:15 -05:00
2022-08-04 22:13:59 +02:00
2022-08-04 22:13:59 +02:00
2023-02-25 16:12:51 +01:00
2022-08-04 22:13:59 +02:00
2021-11-15 19:32:23 -05:00
2022-08-04 15:16:48 +02:00
2022-05-29 17:45:52 -04:00
2022-05-29 17:45:52 -04:00
2022-08-04 22:13:59 +02:00
2022-05-29 17:45:52 -04:00
2022-08-04 22:13:59 +02:00
2022-08-04 22:13:59 +02:00
2022-05-29 17:45:52 -04:00
2022-05-29 17:45:52 -04:00
2022-08-04 22:13:59 +02:00
2022-12-07 21:18:24 +01:00
2022-05-29 17:45:52 -04:00
2022-08-04 22:13:59 +02:00
2022-08-04 22:13:59 +02:00