std::raise(signum);
}
-unsigned char sigsegv_stack[SIGSTKSZ]; /* alternate stack for SIGSEGV handler */
+std::array<unsigned char, SIGSTKSZ> sigsegv_stack; /* alternate stack for SIGSEGV handler */
/**
* Install signal handler for SIGSEGV. Check that nobody has already installed
*/
static void install_segvhandler()
{
- stack_t stack;
stack_t old_stack;
- stack.ss_sp = sigsegv_stack;
- stack.ss_size = sizeof sigsegv_stack;
- stack.ss_flags = 0;
- if (sigaltstack(&stack, &old_stack) == -1) {
+ if (simgrid::kernel::context::Context::install_sigsegv_stack(&old_stack, true) == -1) {
XBT_WARN("Failed to register alternate signal stack: %s", strerror(errno));
return;
}
*/
for (auto const& actor : simix_global->actors_that_ran) {
- if (actor->simcall_.call_ != SIMCALL_NONE) {
+ if (actor->simcall_.call_ != simgrid::simix::Simcall::NONE) {
actor->simcall_handle(0);
}
}