diff --git a/tests/pty_test.cpp b/tests/pty_test.cpp
index a371434..74415d5 100644
--- a/tests/pty_test.cpp
+++ b/tests/pty_test.cpp
@@ -72,17 +72,18 @@
 }
 
 struct PtyReader_28979140_Arg {
- int slave_fd;
- uint32_t data_count;
- bool finished;
- std::atomic<bool> matched;
+  int main_cpu_id;
+  int slave_fd;
+  uint32_t data_count;
+  bool finished;
+  std::atomic<bool> matched;
 };
 
 static void PtyReader_28979140(PtyReader_28979140_Arg* arg) {
   arg->finished = false;
   cpu_set_t cpus;
   ASSERT_EQ(0, sched_getaffinity(0, sizeof(cpu_set_t), &cpus));
-  CPU_CLR(0, &cpus);
+  CPU_CLR(arg->main_cpu_id, &cpus);
   ASSERT_EQ(0, sched_setaffinity(0, sizeof(cpu_set_t), &cpus));
 
   uint32_t counter = 0;
@@ -105,7 +106,9 @@
 TEST(pty, bug_28979140) {
   // This test is to test a kernel bug, which uses a lock free ring-buffer to
   // pass data through a raw pty, but missing necessary memory barriers.
-  if (sysconf(_SC_NPROCESSORS_ONLN) == 1) {
+  cpu_set_t cpus;
+  ASSERT_EQ(0, sched_getaffinity(0, sizeof(cpu_set_t), &cpus));
+  if (CPU_COUNT(&cpus) < 2) {
     GTEST_LOG_(INFO) << "This test tests bug happens only on multiprocessors.";
     return;
   }
@@ -120,9 +123,20 @@
   cfmakeraw(&tattr);
   ASSERT_EQ(0, tcsetattr(slave, TCSADRAIN, &tattr));
 
-  // 2. Create thread for slave reader.
-  pthread_t thread;
+  // 2. Make master thread and slave thread running on different cpus:
+  // master thread uses first available cpu, and slave thread uses other cpus.
   PtyReader_28979140_Arg arg;
+  arg.main_cpu_id = -1;
+  for (int i = 0; i < CPU_SETSIZE; i++) {
+    if (CPU_ISSET(i, &cpus)) {
+      arg.main_cpu_id = i;
+      break;
+    }
+  }
+  ASSERT_GE(arg.main_cpu_id, 0);
+
+  // 3. Create thread for slave reader.
+  pthread_t thread;
   arg.slave_fd = slave;
   arg.data_count = TEST_DATA_COUNT;
   arg.matched = true;
@@ -130,11 +144,8 @@
                               reinterpret_cast<void*(*)(void*)>(PtyReader_28979140),
                               &arg));
 
-  // 3. Make master thread and slave thread running on different cpus:
-  // master thread uses cpu 0, and slave thread uses other cpus.
-  cpu_set_t cpus;
   CPU_ZERO(&cpus);
-  CPU_SET(0, &cpus);
+  CPU_SET(arg.main_cpu_id, &cpus);
   ASSERT_EQ(0, sched_setaffinity(0, sizeof(cpu_set_t), &cpus));
 
   // 4. Send data to slave.
