Merge 1447 "Fix call to rt_sigaction"
> Fix call to rt_sigaction > > Despite the fact that many places imply that sigaction and rt_sigaction > are essentially the same, rt_sigaction's signature is actually > different-- it takes the size of the kernel's sigset_t as an extra argument. > > BUG=473973 > TBR=cjhopman@chromium.org Review URL: https://breakpad.appspot.com/5784002 git-svn-id: http://google-breakpad.googlecode.com/svn/branches/chrome_42@1448 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
parent
1ff31641a5
commit
80fd81452d
@ -195,12 +195,12 @@ void InstallDefaultHandler(int sig) {
|
|||||||
// to SIG_DFL is ignored. In that case, an infinite loop is entered as the
|
// to SIG_DFL is ignored. In that case, an infinite loop is entered as the
|
||||||
// signal is repeatedly sent to breakpad's signal handler.
|
// signal is repeatedly sent to breakpad's signal handler.
|
||||||
// To work around this, directly call the system's sigaction.
|
// To work around this, directly call the system's sigaction.
|
||||||
struct sigaction sa;
|
struct kernel_sigaction sa;
|
||||||
memset(&sa, 0, sizeof(sa));
|
memset(&sa, 0, sizeof(sa));
|
||||||
sigemptyset(&sa.sa_mask);
|
sys_sigemptyset(&sa.sa_mask);
|
||||||
sa.sa_handler = SIG_DFL;
|
sa.sa_handler_ = SIG_DFL;
|
||||||
sa.sa_flags = SA_RESTART;
|
sa.sa_flags = SA_RESTART;
|
||||||
syscall(__NR_rt_sigaction, sig, &sa, NULL);
|
sys_rt_sigaction(sig, &sa, NULL, sizeof(kernel_sigset_t));
|
||||||
#else
|
#else
|
||||||
signal(sig, SIG_DFL);
|
signal(sig, SIG_DFL);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user