- SIGBUS
Infobox Computing signal
description = Bus error
action = Abnormal termination of the process
BUS_ADRALN | invalid address alignment
BUS_ADRERR | non-existent physical address
BUS_OBJERR | object-specific hardware errorOnPOSIX -compliant platforms, SIGBUS is the signal thrown bycomputer program s causing abus error . The symbolic constant for SIGBUS is defined in theheader file
. Symbolic signal names are used because signal numbers can vary across platforms.signal.h Etymology
"SIG" is a common prefix for signal names. "BUS" refers to the
data bus in the context of abus error .Usage
Computer programs may throw SIGBUS for improper memory handling:; Invalid address alignment: The program has attempted to read or write data that does not fit the CPU's memory-alignment rules.; Non-existent physical address: This is equivalent to a
segmentation fault , but for a physical address rather than a virtual address.; Object-specific hardware error: This is far less common, but it is present in Solaris, when virtual memory pages have disappeared (e.g. accessing anmmap ed file which has been truncated. [http://groups.google.com/group/comp.unix.internals/browse_thread/thread/6369e8f923aedcb0/54f8ed15e326dc0] )For further discussion, see "
bus error ".The
operating system may inform the application of the nature of the error using thesignal stack , which developers can use todebug their programs or handle errors.The default action for a program upon receiving SIGBUS is abnormal termination. This will end the process, but may generate a
core file to aid debugging, or other platform dependent action.SIGBUS can be handled (caught). That is, applications can request what action they want to occur. Examples of such action might be ignoring it, calling a function, or restoring the default action. In some circumstances, ignoring SIGBUS results in
undefined behaviour .An example of an application that might handle SIGBUS is a
debugger , which might check the signal stack and inform the developer of what happened, and where the program terminated.SIGBUS is usually generated by the
operating system , but users with appropriate permissions can use thekill
system call or kill command (auserland program, or sometimes a shell builtin) to send the signal to a process at will.
Wikimedia Foundation. 2010.