2013-05-19 5 views
2

분할 오류가 있고 프로세스 코어 덤프가 생성되면 커널 및 사용자 공간 (w.r. Linux)에서 발생하는 이벤트의 순서는 무엇입니까?리눅스 커널 : 프로세스 코어 덤프가 발생하기 전의 일련의 이벤트/경로

Linux는 sigsegv 처리기를 지원합니다. 어떻게 신호 처리기가 호출되고 돌아 오면 코어 ump가 생성됩니까?

나는 일련의 이벤트와 리눅스 커널 함수 이름에 대한 포인터를 찾고있다. (최신 커널은 w.r.t이다.) 나머지는 함수 이름에서 알아낼 것이고, 나머지는 코드에서 이해할 수 있습니다.

답변

2

SIGSEGV가 생성되면 커널은 처리기가 있는지 확인합니다. 있다면 다른 신호와 마찬가지로 호출 할 것입니다. 핸들러가 있으면 코어가 생성되지 않습니다. 이것은 get_signal_to_deliver에서 발생합니다 : https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/kernel/signal.c#n2192

SIGSEGV에 대한 기본 동작을 얻으면 코어 덤프가 생성되고 종료됩니다. 코어 덤프는 fs/coredump.c의 do_coredump에 의해 생성됩니다. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/fs/coredump.c#n485