diff --git a/src/slurmctld/locks.c b/src/slurmctld/locks.c index 610923fec092c35aae75e981b0e95d83e4e1fb7a..70a4012097e674db2b5c33516393d5b89d789360 100644 --- a/src/slurmctld/locks.c +++ b/src/slurmctld/locks.c @@ -67,14 +67,14 @@ static void _wr_wrunlock(lock_datatype_t datatype); * systems. Only used within development builds to mitigate possible problems * with production builds. */ -__thread bool slurmctld_locked = false; +static __thread bool slurmctld_locked = false; /* * Used to detect any location where the acquired locks differ from the * release locks. */ -__thread slurmctld_lock_t thread_locks; +static __thread slurmctld_lock_t thread_locks; static bool _store_locks(slurmctld_lock_t lock_levels) { @@ -94,8 +94,13 @@ static bool _clear_locks(slurmctld_lock_t lock_levels) return false; slurmctld_locked = false; - return !memcmp((void *) &thread_locks, (void *) &lock_levels, - sizeof(slurmctld_lock_t)); + if (memcmp((void *) &thread_locks, (void *) &lock_levels, + sizeof(slurmctld_lock_t))) + return false; + + memset((void *) &thread_locks, 0, sizeof(slurmctld_lock_t)); + + return true; } #endif