Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Jul 2017 18:07:41 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 219399] System panics after several hours of 14-threads-compilation orgies using poudriere on AMD Ryzen...
Message-ID:  <bug-219399-8-0yEvqzuPa8@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-219399-8@https.bugs.freebsd.org/bugzilla/>
References:  <bug-219399-8@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D219399

--- Comment #87 from Don Lewis <truckman@FreeBSD.org> ---
This variant of the Ryzen segv test pins each thread to a randomly chosen C=
PU.=20
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 =3D getpid();

@@ -362,11 +364,20 @@

 #ifdef _MSC_VER
 #else
-       cpu =3D random() % n_cpus;
+       cpu1 =3D random() % n_cpus;
+       cpu2 =3D random() % n_cpus;
+       cpu3 =3D 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);

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-219399-8-0yEvqzuPa8>