SIGILL | |
---|---|
Popis | Neplatný pokyn |
Výchozí | končí výpisem paměti |
SA_SIGINFO kódy | |
ILL_ILLOPC | neplatný operační kód |
ILL_ILLOPN | neplatný operand |
ILL_ADR | neplatné adresování |
ILL_ILLTRP | neplatná past |
ILL_PRVOPC | privilegovaný provoz |
ILL_PRVREG | privilegovaný rejstřík |
ILL_COPROC | chyba koprocesoru |
ILL_BADSTK | chyba zásobníku |
Na systémech POSIX je SIGILL signál odeslaný procesu, když se pokouší provést chybnou, neexistující nebo privilegovanou instrukci.
SIGILL je celočíselná konstanta definovaná v signal.h. Místo čísel se používají symbolické názvy signálů, protože čísla signálů se mohou v různých implementacích lišit.
SIG je běžná signální předpona (z anglického signal ), ILL je zkrácený pravopis angličtiny. nezákonné poučení
Existuje mnoho důvodů pro SIGILL. Jednou z nejčastějších příčin je přenos řízení do náhodného paměťového místa - jako výsledek přenosu řízení přes neinicializovaný nebo poškozený ukazatel (nebo návratovou adresu na zásobníku). Mezi další případy patří chyby kompilátoru, poškození souborového systému nebo pokus o provedení instrukce, která vyžaduje zvláštní oprávnění.
Na mnoha platformách se s vývojem hardwaru zavádějí nové instrukce, registry a podobně a aplikace vytvořené pro moderní hardware mohou obsahovat instrukce, které na starším hardwaru nejsou rozpoznány. SIGILL se například objeví při pokusu o provedení instrukcí MMX na procesoru i486 , který je nepodporuje.
SIGILL může být zachycen nebo ignorován. Ignorování SIGILL však může v některých případech vést k nepředvídatelným výsledkům.
POSIX signály | |||
---|---|---|---|
| |||
|