Linux x86_64Sinais#131
sigaltstack
Define ou consulta a pilha alternativa usada para executar tratadores de sinal.
Descrição
Permite registrar uma região de memória separada da pilha normal da thread para rodar tratadores de sinal — essencial para tratar SIGSEGV causado por estouro de pilha (stack overflow), já que nesse caso a pilha normal está esgotada.
man 2
Assinatura
int sigaltstack(const stack_t * ss, stack_t * old_ss);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| ss | const stack_t * | Nova pilha alternativa a instalar, ou NULL para não alterar. |
| old_ss | stack_t * | Se não for NULL, recebe a configuração anterior. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | ssconst stack_t * |
| rsi | argumento 2 | old_ssstack_t * |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EFAULT(14)
- Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).
- EINVAL(22)
- Argumento inválido.
- ENOMEM(12)
- Memória insuficiente para completar a operação.
- EPERM(1)
- Operação não permitida (falta de privilégio).