crash-utility(crashtool) - 리다이렉션 커맨드
By Guillermo Austin Kim | 2018년 1월 5일 |
가끔 모든 프로세스의 스택 주소를 알고 싶을 때가 있어요. 이럴 때 쓰면 좋은 명령어가 있어 소개합니다. 이 기능이 Trace32보다 확실히 좋은 것 같아요. 우선 init process의 TCB(Task descriptor) 주소를 파악해요.흠, 0xffffffc001580e40이네요.crash64> p &init_task$1 = (struct task_struct *) 0xffffffc001580e40 <init_task> 모든 프로세스들이 task_struct.tasks 링크드 리스트에 매달려 있잖아요?그럼 아래 명령어를 쳐서 task_addr란 파일로 리다이렉트 시켜요.list task_struct.tasks -h 0xffffffc001580e40 > task_addr
Kernel][Panic] 메모리 불량 커널 크래시@find_vma_links - 1
By Guillermo Austin Kim | 2017년 12월 28일 |
특정 디바이스가 부팅 후 5분 이내에 커널 패닉이 발생하는 현상을 리포트 받았는데요.참 신기하죠? 특정 디바이스만 커널 패닉이라. 이럴 때 너무 긴장할 필요 없어요. 논리적인 오류로 발생한 커널 패닉인지 정확히 분석한 후,논리적인 문제가 아니라면 하드웨어 담당자에게 메모리 불량이 아닌 지 테스트(보통 정상 메모리와 스왑하죠)을 요청하면 되요. 커널 패닉 시 로그는 아래와 같아요.CPU5에서 돌던 find_vma_links() 함수의 find_vma_links+0x1c 코드에서 데이터 오버트가(Data Abort) 발생했네요. 프로세스 이름은 "sensorservice" 이구요.[ 2107.239317 / 01-01 11:11:03.809][5] Unable to handle kernel NULL po
[Linux][Kernel] data abort@irq_affinity_notify - 리눅스 커널
By Guillermo Austin Kim | 2018년 1월 12일 |
아래 커널 로그와 함께 시스템이 커널 패닉으로 돌아가셨어요.irq_affinity_notify+0x4c 란 함수에서 data abort가 난 것을 확인할 수 있어요.[287229.435076] <c6>mmc0: mmc_start_bkops: raw_bkops_status=0x2, from_exception=1[287230.328287] <c6>mmc0: mmc_start_bkops: Starting bkops[287231.319886] <26>Unable to handle kernel NULL pointer dereference at virtual address 000000fc[287231.319920] <26>pgd = c0004000[287231.319936]
워크큐(Workqueue) - struct work_struct->data
By Guillermo Austin Kim | 2017년 12월 24일 |
workqueue를 디버깅할 때 여러 변수를 점검해야 하거든요.그 중에 하나가 struct work_struct->data 변수이거든요 일단 데이터 구조체는 아주 명령어로 볼 수 있죠.crash64> struct -o work_structstruct work_struct { [0] atomic_long_t data; [8] struct list_head entry; [24] work_func_t func;} 이번 기회에 struct work_struct->data 값들을 정리하려고 하는데요.결과는 아래와 같아요. 가끔 디버깅 할 때 아래 매크로 값들을 찾다가 짜증날 때가 가끔 있거든요.workque macro Hexa ValueWORK_STRUCT_COLOR_BITS 0x4