Fix signal.sigwait64_SIGRTMIN test
'kill(pid, sig)' sends signal to arbitrary thread within a process, thus
test was occasionally sending signal to the killing thread, not to the
waiting thread. Use 'tgkill(pid, tid, sig)' instead.
Test: bionic-unit-tests --gtest_filter=signal.sigwait64_SIGRTMIN
Change-Id: I80377295e2362cb87eb4fb4de2489c51c520ea77
diff --git a/tests/signal_test.cpp b/tests/signal_test.cpp
index 3bc3135..eec56dc 100644
--- a/tests/signal_test.cpp
+++ b/tests/signal_test.cpp
@@ -24,9 +24,12 @@
#include <thread>
#include <android-base/macros.h>
+#include <android-base/threads.h>
+
#include <gtest/gtest.h>
#include "SignalUtils.h"
+#include "utils.h"
using namespace std::chrono_literals;
@@ -174,10 +177,10 @@
sigemptyset64(&wait_set);
sigaddset64(&wait_set, SIGRTMIN);
- pid_t pid = getpid();
- std::thread thread([&pid]() {
+ pid_t tid = gettid();
+ std::thread thread([&tid]() {
sleep(1);
- kill(pid, SIGRTMIN);
+ tgkill(getpid(), tid, SIGRTMIN);
});
int received_signal;