| Index: sandbox/linux/seccomp-bpf/die.cc
|
| diff --git a/sandbox/linux/seccomp-bpf/die.cc b/sandbox/linux/seccomp-bpf/die.cc
|
| index 777c9d1139298f46d78bb1ef0a97667b48414015..3baf1f13d9e5272d268b06f312bb17cf055fd23d 100644
|
| --- a/sandbox/linux/seccomp-bpf/die.cc
|
| +++ b/sandbox/linux/seccomp-bpf/die.cc
|
| @@ -16,6 +16,8 @@
|
| #include "base/logging.h"
|
| #include "base/posix/eintr_wrapper.h"
|
| #include "sandbox/linux/seccomp-bpf/syscall.h"
|
| +#include "sandbox/linux/services/syscall_wrappers.h"
|
| +#include "sandbox/linux/system_headers/linux_signal.h"
|
|
|
| namespace sandbox {
|
|
|
| @@ -32,7 +34,10 @@ void Die::ExitGroup() {
|
| // to a defined state; but we have not way to verify whether we actually
|
| // succeeded in doing so. Nonetheless, triggering a fatal signal could help
|
| // us terminate.
|
| - signal(SIGSEGV, SIG_DFL);
|
| + struct sigaction sa = {};
|
| + sa.sa_handler = LINUX_SIG_DFL;
|
| + sa.sa_flags = LINUX_SA_RESTART;
|
| + sys_sigaction(LINUX_SIGSEGV, &sa, nullptr);
|
| Syscall::Call(__NR_prctl, PR_SET_DUMPABLE, (void*)0, (void*)0, (void*)0);
|
| if (*(volatile char*)0) {
|
| }
|
|
|