it usually means your program is trying to execute garbage or a privileged instruction. Since the C compiler generates
only valid instructions, SIGILL typically indicates that the executable file is corrupted, or that you are trying to execute
data. Some common ways of getting into the latter situation are by passing an invalid object where a pointer to a
function was expected, or by writing past the end of an automatic array (or similar problems with pointers to automatic
variables) and corrupting other data on the stack such as the return address of a stack frame. it can also be
generated when the stack overflows, or when the system has trouble running the handler for a signal.