Core BSP 분석/커널 트러블슈팅 (29) 썸네일형 리스트형 [리눅스] 커널 크래시: abort@test_and_set_bit 우선 콜스택부터 점검을 해보면, "kswapd0" 프로세스에서 slab cache를 scanning 하는 도중 커널 크래시가 발생하였음을 알 수 있습니다. 메모리가 부족한 상태로 보입니다. ("kswapd0" 프로세스는 page memory가 부족할 때 실행됩니다.) -000|do_DataAbort(addr = 3244789312, fsr = 3245415784, regs = 0xC1678E40) -001|__dabt_svc(asm) -->|exception -002|test_and_set_bit(asm) // [리눅스][커널] 커널 크래시 분석은 왜 중요할까? 커널 크래시란 커널 크래시 분석은 왜 중요할까? 커널 크래시 분석을 잘하는 게 왜 중요할까요? 너무 당연한 질문인가요? 사실 세상에 너무 당연한 질문은 없습니다. 어쩌면 너무 당연한 질문에 답하려고 고민하다가 많은 걸 깨닫는 경우가 많은 것 같습니다. 여러분이 리눅스 드라이버를 개발하거나 새로운 리눅스 커널 버전을 포팅했다고 가정하겠습니다. 그런데 안타깝게도 부팅 도중 아래와 같은 로그를 출력하는 커널 크래시가 100% 발생하고 있습니다. 어떻게 분석해야 할지 몰라 하루 꼬박 밤을 새웠습니다. 참 이럴 때 난감하죠. [ 0.986578] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) [ 0.986589] CPU.. [Linux][Kernel] 커널 크래시란 커널 크래시란 커널 크래시 분석은 왜 중요할까? 커널 패닉이란 말을 들어본 적이 있나요? 혹시 여러분이 임베디드 리눅스 개발자면 몇 번 쯤은 들어봤을 겁니다. 하지만, 리눅스를 자주 안 쓰거나 리눅스를 학습 용도로 쓰시는 분들에겐 단어가 낯설게 들릴수도 있죠. 여러분들은 대부분 컴퓨터나 노트북을 윈도 운영체제로 쓰실 겁니다. 그런데 혹시 컴퓨터를 오래 쓰다가 블루 스크린을 본 적이 있나요? 밝은 파란색 배경 화면에 흰색으로 이상한 경고 문구가 떠있죠. 이 때 컴퓨터는 아무런 동작을 안합니다. 이런 화면을 처음 봤을 때 어땠나요? 좀 짜증나지 않았나요? 전 예전 처음 이 블루 스크린을 봤을 때 엄청 당황했었어요. 왜냐면 “전원을 다시 키면 부팅은 할까?”, “혹시 컴퓨터에 저장된 자료가 날아가는 건 아닌가.. [Kernel][Crash] 워크큐(workqueue) 락업(3) at [0321] #커널 크래시 디버깅 및 TroubleShooting Race로 mmc_wait_data_done() 함수에서 커널 패닉 "cat /d/shrinker" 입력 시 커널 패닉 함수 포인터 미지정으로 xfrm_local_error() 커널 패닉 preempt 조건으로 ___might_sleep() 함수 크래시 스택 카나리: __stack_chk_fail() 함수 크래시 스택 카나리: tcp_v4_rcv -> __stack_chk_fail 크래시 뮤텍스 데드락(Mutex Deadlock)으로 락업(lockup) 디바이스 드라이버 Signature 문제로 커널 크래시 메모리 불량 커널 크래시 @find_vma_links() 메모리 불량 커널 크래시 @ttwu_do_activate() Race로 ipv6_ifa_.. [Kernel][Crash] 워크큐(workqueue) 락업(2) at [0321] #커널 크래시 디버깅 및 TroubleShooting Race로 mmc_wait_data_done() 함수에서 커널 패닉 "cat /d/shrinker" 입력 시 커널 패닉 함수 포인터 미지정으로 xfrm_local_error() 커널 패닉 preempt 조건으로 ___might_sleep() 함수 크래시 스택 카나리: __stack_chk_fail() 함수 크래시 스택 카나리: tcp_v4_rcv -> __stack_chk_fail 크래시 뮤텍스 데드락(Mutex Deadlock)으로 락업(lockup) 디바이스 드라이버 Signature 문제로 커널 크래시 메모리 불량 커널 크래시 @find_vma_links() 메모리 불량 커널 크래시 @ttwu_do_activate() Race로 ipv6_ifa_.. [Kernel][Crash][0320] 워크큐(workqueue) 락업(1) #커널 크래시 디버깅 및 TroubleShooting Race로 mmc_wait_data_done() 함수에서 커널 패닉 "cat /d/shrinker" 입력 시 커널 패닉 함수 포인터 미지정으로 xfrm_local_error() 커널 패닉 preempt 조건으로 ___might_sleep() 함수 크래시 스택 카나리: __stack_chk_fail() 함수 크래시 스택 카나리: tcp_v4_rcv -> __stack_chk_fail 크래시 뮤텍스 데드락(Mutex Deadlock)으로 락업(lockup) 디바이스 드라이버 Signature 문제로 커널 크래시 메모리 불량 커널 크래시 @find_vma_links() 메모리 불량 커널 크래시 @ttwu_do_activate() Race로 ipv6_ifa_.. [Kernel][Panic] panic@ttwu_do_activate (메모리 불량 보드) #커널 크래시 디버깅 및 TroubleShooting Race로 mmc_wait_data_done() 함수에서 커널 패닉 "cat /d/shrinker" 입력 시 커널 패닉 함수 포인터 미지정으로 xfrm_local_error() 커널 패닉 preempt 조건으로 ___might_sleep() 함수 크래시 스택 카나리: __stack_chk_fail() 함수 크래시 스택 카나리: tcp_v4_rcv -> __stack_chk_fail 크래시 뮤텍스 데드락(Mutex Deadlock)으로 락업(lockup) 디바이스 드라이버 Signature 문제로 커널 크래시 메모리 불량 커널 크래시 @find_vma_links() 메모리 불량 커널 크래시 @ttwu_do_activate() Race로 ipv6_ifa_.. [Kernel][Stability] tcp_v4_rcv -> __stack_chk_fail #커널 크래시 디버깅 및 TroubleShooting Race로 mmc_wait_data_done() 함수에서 커널 패닉 "cat /d/shrinker" 입력 시 커널 패닉 함수 포인터 미지정으로 xfrm_local_error() 커널 패닉 preempt 조건으로 ___might_sleep() 함수 크래시 스택 카나리: __stack_chk_fail() 함수 크래시 스택 카나리: tcp_v4_rcv -> __stack_chk_fail 크래시 뮤텍스 데드락(Mutex Deadlock)으로 락업(lockup) 디바이스 드라이버 Signature 문제로 커널 크래시 메모리 불량 커널 크래시 @find_vma_links() 메모리 불량 커널 크래시 @ttwu_do_activate() Race로 ipv6_ifa_.. 이전 1 2 3 4 다음