From 10c4cff2edfbfbb8ca2c142bd4b3c7780904ab0c Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Wed, 14 Aug 2024 13:26:40 +1000 Subject: [PATCH] Update StarThread_unix.cpp --- source/core/StarThread_unix.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/source/core/StarThread_unix.cpp b/source/core/StarThread_unix.cpp index 7fbf279..6d1b173 100644 --- a/source/core/StarThread_unix.cpp +++ b/source/core/StarThread_unix.cpp @@ -131,7 +131,13 @@ struct MutexImpl { } void lock() { - pthread_mutex_lock(&mutex); + timespec ts; + clock_gettime(CLOCK_REALTIME, &ts); + ts.tv_sec += 60; + if (pthread_mutex_timedlock(&mutex, &ts) != 0) { + Logger::warn("Mutex lock is taking too long. Stack:\n{}", outputStack(captureStack()); + pthread_mutex_lock(&mutex); + } } void unlock() { @@ -199,7 +205,13 @@ struct RecursiveMutexImpl { } void lock() { - pthread_mutex_lock(&mutex); + timespec ts; + clock_gettime(CLOCK_REALTIME, &ts); + ts.tv_sec += 60; + if (pthread_mutex_timedlock(&mutex, &ts) != 0) { + Logger::warn("RecursiveMutex lock is taking too long. Stack:\n{}", outputStack(captureStack()); + pthread_mutex_lock(&mutex); + } } void unlock() {