From f197d39aaf6a8a96bde73e6bdbbe98e8173bba19 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Sun, 3 Aug 2025 19:33:25 +0300 Subject: [PATCH] LibC: Don't allow pthread_join to return EINTR --- userspace/libraries/LibC/pthread.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/userspace/libraries/LibC/pthread.cpp b/userspace/libraries/LibC/pthread.cpp index 18411eaab3..bf6596d33b 100644 --- a/userspace/libraries/LibC/pthread.cpp +++ b/userspace/libraries/LibC/pthread.cpp @@ -475,7 +475,14 @@ int pthread_equal(pthread_t t1, pthread_t t2) int pthread_join(pthread_t thread, void** value_ptr) { pthread_testcancel(); - return syscall(SYS_PTHREAD_JOIN, thread, value_ptr); + + errno = 0; + while (syscall(SYS_PTHREAD_JOIN, thread, value_ptr) == -1 && errno == EINTR) + { + pthread_testcancel(); + errno = 0; + } + return errno; } pthread_t pthread_self(void)