SIGSEGV
signal originates as a major page fault hardware exception identified by the processor and is translated by as_fault()
in the address space layer.
When a process overflows its stack, a segmentation violation fault results. The kernel recognizes the violation and can extend the stack size, up to a configurable limit. In a multithreaded environment, the kernel does not keep track of each user thread's stack, so it cannot perform this function. The thread itself is responsible for stack SIGSEGV
(stack overflow signal) handling.
(The SIGSEGV
signal is sent by the threads library when an attempt is made to write to a write-protected page just beyond the end of the stack. This page is allocated as part of the stack creation request.)
It is often the case that segmentation faults occur because of resource restrictions on the size of a process's stack. See “Resource Management” for information about how to increase these limits.
See “Process Virtual Memory” for a more detailed description of the structure of a process's address space.
No comments:
Post a Comment