From 4c8c4a9c3a92300e3e6500e5a278ca37514a1fdb Mon Sep 17 00:00:00 2001
|
From: Yi Fan Yu <yifan.yu@windriver.com>
|
Date: Thu, 1 Apr 2021 15:31:47 -0400
|
Subject: [PATCH] drd/tests/swapcontext: Add SIGALRM handler to avoid
|
stacktrace
|
|
During testing for oe-core build on QEMU,
|
SIGALRM can trigger during nanosleep.
|
This results a different stderr output than expected.
|
|
```
|
==277== Process terminating with default action of signal 14 (SIGALRM)
|
==277== at 0x36C74C3943: clock_nanosleep@@GLIBC_2.17 (clock_nanosleep.c:43)
|
==277== by 0x36C74C8726: nanosleep (nanosleep.c:25)
|
```
|
|
This stacktrace printing will not occur
|
if we add a handler that simply exits.
|
|
https://bugs.kde.org/show_bug.cgi?id=435160
|
|
Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
|
---
|
drd/tests/swapcontext.c | 5 +++++
|
drd/tests/swapcontext.stderr.exp | 4 ----
|
2 files changed, 5 insertions(+), 4 deletions(-)
|
|
diff --git a/drd/tests/swapcontext.c b/drd/tests/swapcontext.c
|
index 622c70bc5..2cb969a5e 100644
|
--- a/drd/tests/swapcontext.c
|
+++ b/drd/tests/swapcontext.c
|
@@ -25,6 +25,10 @@ typedef struct thread_local {
|
size_t nrsw;
|
} thread_local_t;
|
|
+static void sig_alrm_handler(int signo) {
|
+ _exit(1);
|
+}
|
+
|
static void f(void *data, int n)
|
{
|
enum { NR_SWITCHES = 200000 };
|
@@ -76,6 +80,7 @@ int main(int argc, char *argv[])
|
pthread_attr_t attr;
|
int i, res;
|
|
+ signal(SIGALRM, sig_alrm_handler);
|
memset(tlocal, 0, sizeof(tlocal));
|
|
pthread_attr_init(&attr);
|
diff --git a/drd/tests/swapcontext.stderr.exp b/drd/tests/swapcontext.stderr.exp
|
index fcb5d5ed4..d18786f80 100644
|
--- a/drd/tests/swapcontext.stderr.exp
|
+++ b/drd/tests/swapcontext.stderr.exp
|
@@ -1,7 +1,3 @@
|
|
|
-Process terminating with default action of signal 14 (SIGALRM)
|
- at 0x........: swapcontext (in /...libc...)
|
- by 0x........: f (swapcontext.c:?)
|
-
|
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
|
--
|
2.17.1
|