From 1821e0cb52686c7c4a049e26af5c8c4909e4efb5 Mon Sep 17 00:00:00 2001 From: Matheus Date: Thu, 30 May 2024 10:18:13 -0300 Subject: [PATCH] mlibc: update sys_futex_wait EINTR patch --- patches/mlibc/jinx-working-patch.patch | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/patches/mlibc/jinx-working-patch.patch b/patches/mlibc/jinx-working-patch.patch index 66aeaff0..e121d2d2 100644 --- a/patches/mlibc/jinx-working-patch.patch +++ b/patches/mlibc/jinx-working-patch.patch @@ -75,6 +75,20 @@ index 3474615..e034881 100644 } char **backtrace_symbols(void *const *, int) { +diff --git mlibc-clean/options/internal/generic/threads.cpp mlibc-workdir/options/internal/generic/threads.cpp +index 3c1e70e..1ef07a4 100644 +--- mlibc-clean/options/internal/generic/threads.cpp ++++ mlibc-workdir/options/internal/generic/threads.cpp +@@ -157,7 +157,8 @@ int thread_mutex_lock(struct __mlibc_mutex *mutex) { + + // If the wait returns EAGAIN, that means that the mutex_waiters_bit was just unset by + // some other thread. In this case, we should loop back around. +- if (e && e != EAGAIN) ++ // Also do so in case of a signal being caught. ++ if (e && e != EAGAIN && e != EINTR) + mlibc::panicLogger() << "sys_futex_wait() failed with error code " << e << frg::endlog; + + // Opportunistically try to take the lock after we wake up. diff --git mlibc-clean/options/internal/include/mlibc/lock.hpp mlibc-workdir/options/internal/include/mlibc/lock.hpp index aa05079..8bff987 100644 --- mlibc-clean/options/internal/include/mlibc/lock.hpp