mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-28 00:02:28 +00:00
Discard ignored signals on New Technology (#592)
This commit is contained in:
parent
4b4ea046c4
commit
7de2f229a7
4 changed files with 57 additions and 1 deletions
|
@ -156,3 +156,22 @@ noubsan void ubsanTrumpsSystemsEngineering(void) {
|
|||
TEST(sigaction, sigFpe_handlerCanEditProcessStateAndRecoverExecution) {
|
||||
ubsanTrumpsSystemsEngineering();
|
||||
}
|
||||
|
||||
static unsigned OnSignalCnt = 0;
|
||||
void OnSignal(int sig, siginfo_t *si, void *ctx) {
|
||||
OnSignalCnt++;
|
||||
}
|
||||
|
||||
TEST(sigaction, ignoringSignalDiscardsSignal) {
|
||||
struct sigaction sa = {.sa_sigaction = OnSignal, .sa_flags = SA_SIGINFO};
|
||||
ASSERT_EQ(0, sigaction(SIGUSR1, &sa, NULL));
|
||||
sigset_t blocked;
|
||||
sigemptyset(&blocked);
|
||||
sigaddset(&blocked, SIGUSR1);
|
||||
ASSERT_EQ(0, sigprocmask(SIG_SETMASK, &blocked, NULL));
|
||||
ASSERT_EQ(0, raise(SIGUSR1));
|
||||
ASSERT_NE(SIG_ERR, signal(SIGUSR1, SIG_IGN));
|
||||
ASSERT_EQ(0, sigaction(SIGUSR1, &sa, NULL));
|
||||
ASSERT_EQ(0, sigprocmask(SIG_UNBLOCK, &blocked, NULL));
|
||||
EXPECT_EQ(0, OnSignalCnt);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue