SIGBUS | |
---|---|
Popis | Signál chyby sběrnice |
Výchozí | končí výpisem paměti |
SA_SIGINFO kódy | |
Nemá žádné specifické kódy |
V systémech POSIX je SIGBUS signál chyby sběrnice při přístupu k fyzické paměti.
SIGBUS je celočíselná konstanta definovaná v záhlaví souboru 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 - společná signální předpona (z angl . signal ), BUS - angl. sběrnice - datová sběrnice (nebo adresová sběrnice).
Proces může získat SIGBUS, pokud se k paměti přistupuje nesprávně:
Nesouosost dat Pokus o přístup, který nesplňuje pravidla zarovnání přijatá na používaném procesoru. Přístup k neexistující fyzické paměti Přístup k adresám, pro které není v počítači nainstalována žádná paměť. Výjimka je podobná chybě segmentace, ale vztahuje se spíše na fyzické než virtuální adresy. Hardwarová chyba specifická pro objekt Vzácnějším případem, například na Solarisu , k takovému signálu dochází, když stránky virtuální paměti již nejsou dostupné kvůli problémům s přístupem k objektu, který je na ně mapován (například když byl mmap()soubor mapovaný pomocí následně zkrácen [1] Archivováno 16. července 2010 na Wayback Machine .Operační systém může poskytnout další informace o chybě pomocí zásobníku signálů , což může vývojáři pomoci chybu odladit.
Ve výchozím nastavení se proces zhroutí s výpisem paměti (a/nebo jinou operací specifickou pro platformu), kterou lze použít k získání informací o podmínkách, za kterých k výjimce došlo.
SIGBUS může být zachycen nebo ignorován. Ignorování SIGBUS však může v některých případech vést k nepředvídatelným výsledkům. Příkladem programu, který zachycuje SIGBUS, je debugger , který je schopen analyzovat zásobník a informovat vývojáře, v jaké fázi k chybě došlo.
POSIX signály | |||
---|---|---|---|
| |||
|