SIGBUS | |
---|---|
Beskrivning | Bussfelsignal |
Standard | avsluta med en minnesdump |
SA_SIGINFO- koder | |
Har inga specifika koder |
På POSIX -system är SIGBUS en bussfelsignal vid åtkomst till fysiskt minne.
SIGBUS är en heltalskonstant definierad i rubrikfilen signal.h. De symboliska namnen på signalerna används istället för siffrorna, eftersom numren på signalerna kan skilja sig åt i olika implementeringar.
SIG - gemensamt signalprefix (från engelsk signal ), BUS - engelska. buss - databuss (eller adressbuss).
En process kan få SIGBUS om minnet nås på fel sätt:
Datafeljustering Försökt åtkomst som inte uppfyller de anpassningsregler som antagits för den processor som används. Åtkomst till obefintligt fysiskt minne Åtkomst till adresser för vilka det inte finns något minne installerat på datorn. Ett undantag liknar ett segmenteringsfel, men gäller fysiska adresser snarare än virtuella. Objektspecifikt hårdvarufel Ett mer sällsynt fall, till exempel på Solaris , uppstår en sådan signal när sidor med virtuellt minne inte längre är tillgängliga, på grund av problem med att komma åt objektet som är mappat till dem (till exempel när en mmap()fil som mappas med därefter trunkerades [1] Arkiverad 16 juli 2010 på Wayback Machine .Operativsystemet kan ge ytterligare information om felet med hjälp av signalstacken , vilket kan hjälpa utvecklaren att felsöka felet.
Som standard kraschar processen med en minnesdump (och/eller annan plattformsspecifik operation) som kan användas för att få information om de förhållanden under vilka undantaget inträffade.
SIGBUS kan avlyssnas eller ignoreras. Att ignorera SIGBUS kan dock i vissa fall leda till oförutsägbara resultat. Ett exempel på ett program som fångar upp SIGBUS är en debugger som kan analysera stacken och informera utvecklaren i vilket skede felet inträffade.
POSIX- signaler | |||
---|---|---|---|
| |||
|