analysis of segment fault error
2022. 11. 14. 14:51ㆍ카테고리 없음
- 목차
반응형
https://enodev.fr/posts/decode-segfault-errors-in-dmesg.html
Decode segfault errors in dmesg
How to decode a segfault error displayed in dmesg and use to debug your program
enodev.fr
dmesg를 통해 segment fault을 일으킨 process에 대한 정보를 확인할 수 있습니다.
... test [106309]: segfault at ffffffffffffffed ip 000000000055a612 sp 00007fa9bbee1330 error 5
위와 같이 출력된 log에서
test는 program의 이름을, 그리고 106309는 pid를 의미하며, ip 이후의 주소는 instruction pointer의 주소값을 의미합니다. sp는 stack pointer입니다. error는 에러의 코드를 의미하며 위 page link에서도 확인할 수 있듯이 다음의 의미를 가지고 있습니다.
/*
* Page fault error code bits:
*
* bit 0 == 0: no page found 1: protection fault
* bit 1 == 0: read access 1: write access
* bit 2 == 0: kernel-mode access 1: user-mode access
* bit 3 == 1: use of reserved bit detected
* bit 4 == 1: fault was an instruction fetch
* bit 5 == 1: protection keys block access
* bit 15 = 1: SGX MMU page-fault
*/
enum x86_pf_error_code {
X86_PF_PROT = 1 << 0,
X86_PF_WRITE = 1 << 1,
X86_PF_USER = 1 << 2,
X86_PF_RSVD = 1 << 3,
X86_PF_INSTR = 1 << 4,
X86_PF_PK = 1 << 5,
X86_PF_SGX = 1 << 15,
};
반응형