From 7c1736c09f454b83f807e5716988afaaf2d86f3f Mon Sep 17 00:00:00 2001 From: Jonathan Wilkes <jon.w.wilkes@gmail.com> Date: Thu, 21 Jan 2016 20:21:18 -0500 Subject: [PATCH] port from pd-l2ork git: d095289d968720dec4fcba7e2c0dcaa95252278e *updated locking mechanism to prevent multiple locks or unlocks in a row, which in turn causes crashes on newer Intel processors. --- pd/src/m_sched.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/pd/src/m_sched.c b/pd/src/m_sched.c index 9d6bdff8d..a8559b980 100644 --- a/pd/src/m_sched.c +++ b/pd/src/m_sched.c @@ -581,15 +581,27 @@ int m_batchmain(void) #ifdef THREAD_LOCKING static pthread_mutex_t sys_mutex = PTHREAD_MUTEX_INITIALIZER; +static int sys_mutex_lock = 0; +//#include <stdio.h> void sys_lock(void) { - pthread_mutex_lock(&sys_mutex); + //fprintf(stderr,"sys_lock\n"); + if (!sys_mutex_lock) + { + pthread_mutex_lock(&sys_mutex); + sys_mutex_lock = 1; + } } void sys_unlock(void) { - pthread_mutex_unlock(&sys_mutex); + //fprintf(stderr,"sys_unlock\n"); + if (sys_mutex_lock) + { + pthread_mutex_unlock(&sys_mutex); + sys_mutex_lock = 0; + } } int sys_trylock(void) -- GitLab