Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
yangql
googletest
Commits
08347d7a
Commit
08347d7a
authored
Mar 24, 2020
by
Przemek Kryger
Browse files
Swap settimer and sigaction calls to avoid SIGPROF
Fixes #2760.
parent
749148f1
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
7 additions
and
5 deletions
+7
-5
googletest/test/googletest-death-test-test.cc
googletest/test/googletest-death-test-test.cc
+7
-5
No files found.
googletest/test/googletest-death-test-test.cc
View file @
08347d7a
...
...
@@ -391,17 +391,19 @@ void SigprofAction(int, siginfo_t*, void*) { /* no op */ }
// Sets SIGPROF action and ITIMER_PROF timer (interval: 1ms).
void
SetSigprofActionAndTimer
()
{
struct
itimerval
timer
;
timer
.
it_interval
.
tv_sec
=
0
;
timer
.
it_interval
.
tv_usec
=
1
;
timer
.
it_value
=
timer
.
it_interval
;
ASSERT_EQ
(
0
,
setitimer
(
ITIMER_PROF
,
&
timer
,
nullptr
));
struct
sigaction
signal_action
;
memset
(
&
signal_action
,
0
,
sizeof
(
signal_action
));
sigemptyset
(
&
signal_action
.
sa_mask
);
signal_action
.
sa_sigaction
=
SigprofAction
;
signal_action
.
sa_flags
=
SA_RESTART
|
SA_SIGINFO
;
ASSERT_EQ
(
0
,
sigaction
(
SIGPROF
,
&
signal_action
,
nullptr
));
// timer comes second, to avoid SIGPROF premature delivery, as suggested at
// https://www.gnu.org/software/libc/manual/html_node/Setting-an-Alarm.html
struct
itimerval
timer
;
timer
.
it_interval
.
tv_sec
=
0
;
timer
.
it_interval
.
tv_usec
=
1
;
timer
.
it_value
=
timer
.
it_interval
;
ASSERT_EQ
(
0
,
setitimer
(
ITIMER_PROF
,
&
timer
,
nullptr
));
}
// Disables ITIMER_PROF timer and ignores SIGPROF signal.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment