Syscall BSD#53
svc · unix #53
sigaltstack
Définit ou interroge la stack de signaux alternative utilisée par les handlers SA_ONSTACK.
Prototype
int sigaltstack(struct sigaltstack *nss, struct sigaltstack *oss);Retour: int
Arguments
| Name | Type | Dir | Description |
|---|---|---|---|
| nss | struct sigaltstack | - | |
| oss | struct sigaltstack | - |
Historique des versions
| XNU tag | macOS | # |
|---|---|---|
| xnu-1456.1.26 | macOS 10.6 Snow Leopard | 53 |
| xnu-1486.2.11 | — | 53 |
| xnu-1504.15.3 | — | 53 |
| xnu-1504.3.12 | — | 53 |
| xnu-1504.7.4 | — | 53 |
| xnu-1504.9.17 | — | 53 |
| xnu-1504.9.26 | — | 53 |
| xnu-1504.9.37 | — | 53 |
Notes
Indispensable quand un handler peut survenir sur un thread dont la stack principale est épuisée (SIGSEGV d'overflow de stack). Le buffer doit faire au moins SIGSTKSZ octets et survivre à tout handler qui l'utilise. Chaque pthread peut avoir sa propre alt stack ; le runtime en configure une pour le thread principal dans certains toolchains Apple.
Détection
La probe DTrace syscall::sigaltstack:entry expose la base de la nouvelle stack dans arg0 et ss_flags. Les rapports de crash signalent l'usage de l'alt stack quand un SIGSEGV y est capturé.
API associées
sigactionsigprocmasksigsuspendkill