https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=219399
--- Comment #87 from Don Lewis <truck...@freebsd.org> --- This variant of the Ryzen segv test pins each thread to a randomly chosen CPU. Top in thread display mode shows that the individual threads are pinned to the reported CPUs. I ran it overnight with a loop count parameter of 10000000 and observed no errors. --- ryzen_segv_test.c.orig 2017-07-19 17:26:47.686991000 -0700 +++ ryzen_segv_test2.c 2017-07-19 22:05:45.162536000 -0700 @@ -69,6 +69,8 @@ #include <sys/mman.h> #include <sched.h> #include <sys/types.h> +#include <sys/cpuset.h> +#include <pthread_np.h> #include <unistd.h> #endif @@ -332,8 +334,8 @@ pthread_t t1, t2, t3; #ifdef _MSC_VER #else - cpu_set_t cpuset; - int cpu; + cpuset_t cpuset; + int cpu1, cpu2, cpu3; #endif pid_t pid = getpid(); @@ -362,11 +364,20 @@ #ifdef _MSC_VER #else - cpu = random() % n_cpus; + cpu1 = random() % n_cpus; + cpu2 = random() % n_cpus; + cpu3 = random() % n_cpus; CPU_ZERO(&cpuset); - CPU_SET(cpu, &cpuset); - sched_setaffinity(pid, sizeof(cpu_set_t), &cpuset); - fprintf(stderr, "PID:%d CPU:%d\n", (int)pid, cpu); + CPU_SET(cpu1, &cpuset); + pthread_setaffinity_np(t1, sizeof(cpuset_t), &cpuset); + CPU_ZERO(&cpuset); + CPU_SET(cpu2, &cpuset); + pthread_setaffinity_np(t2, sizeof(cpuset_t), &cpuset); + CPU_ZERO(&cpuset); + CPU_SET(cpu3, &cpuset); + pthread_setaffinity_np(t3, sizeof(cpuset_t), &cpuset); + /* cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, pid, sizeof(cpuset_t), &cpuset); */ + fprintf(stderr, "PID:%d CPU1:%d, CPU2:%d CPU3:%d\n", (int)pid, cpu1, cpu2, cpu3); #endif pthread_join(t1, NULL); -- You are receiving this mail because: You are the assignee for the bug. _______________________________________________ freebsd-bugs@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"