[Bug 219399] System panics after several hours of 14-threads-compilation orgies using poudriere on AMD Ryzen...
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Thu Jul 20 18:07:41 UTC 2017
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=219399
--- Comment #87 from Don Lewis <truckman at 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.
More information about the freebsd-bugs
mailing list