From 3b0a1f7e5b10efb978cea4c5cb5b727ba1ef3655 Mon Sep 17 00:00:00 2001 From: The Tumultuous Unicorn Of Darkness Date: Sun, 1 Jan 2023 14:20:44 +0100 Subject: [PATCH] Fix infinite loop in set_cpu_affinity() on macOS Fix #178 --- libcpuid/cpuid_main.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libcpuid/cpuid_main.c b/libcpuid/cpuid_main.c index 6051885..0c228f8 100644 --- a/libcpuid/cpuid_main.c +++ b/libcpuid/cpuid_main.c @@ -177,6 +177,10 @@ static bool set_cpu_affinity(logical_cpu_t logical_cpu) { thread_affinity_policy_data_t ap; ap.affinity_tag = logical_cpu + 1; + /* Note: thread_policy_set() always returns KERN_SUCCESS even if the target logical CPU does not exist + Refer to #178 */ + if (logical_cpu >= get_total_cpus()) + return false; return thread_policy_set(mach_thread_self(), THREAD_AFFINITY_POLICY, (thread_policy_t) &ap, THREAD_AFFINITY_POLICY_COUNT) == KERN_SUCCESS; } #define SET_CPU_AFFINITY