서버/리눅스
segfault
iiliiiili
2020. 4. 21. 05:53
linux kernel error
segmentation fault : 프로그램 동작 중 잘못된 주소를 참조하였을때
segfault 원인
1. 읽기 전용 메모리 영역에 데이터를 쓰려고 할때
2. 운영체제 메모리영역 또는 보호된 메모리 데이터를 쓰려고 할때
3. 잘못된 메모리 영역을 접근하려고 할 때
https://12bme.tistory.com/216
dmesg 형식
cf) dmesg ("display message" 또는 "driver message"를 의미)는 대부분의 리눅스와 유닉스 기반 운영 체제에 있는 명령어로 커널의 메시지 버퍼를 출력한다.
httpd[16495]: segfault at c8 ip 0000003865458742 sp 00007f9966e21870 error 4 in libmysqlclient_r.so.16.0.0[3865400000+139000] |
httpd - 프로그램 명
[16495] - 프로세스 ID
segfault - 죽은 이유
c8 - 죽을때 참조한 주소
IP - instruction pointer
0000003865458742 - 죽었을 때 실행된 명령어 주소
SP - stack point
00007f9966e21870 - 죽었을 때 스택 주소
error 4 - 에러코드
[3865400000+139000] - 오프셋 정보
cf) ip
(프로그램 카운터(Program counter, PC)는 마이크로프로세서(중앙 처리 장치) 내부에 있는 레지스터 중의 하나로서, 다음에 실행될 명령어의 주소를 가지고 있어 실행할 기계어 코드의 위치를 지정한다. 때문에 명령어 포인터라고도 한다. 인텔의 x86계열의 CPU에서는 IP(Instruction Pointer)라고 한다.)
https://doitnow-man.tistory.com/98