SIGBUS

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.

Etymologie

SIG  - společná signální předpona (z angl .  signal ), BUS  - angl.  sběrnice  - datová sběrnice (nebo adresová sběrnice).

Použití

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.