crash-utility - wakelock 디버깅
By Guillermo Austin Kim | 2018년 1월 6일 |
android 시스템에서 wakelock 소스를 등록할 때는 wakelocks_tree란 rbtree 접근을 해요.그럼 이 정보를 바탕으로 어떤 모듈이 wakelock을 잡고 있는지 점검해볼까요? 우선 wakelocks_tree.rb_node 멤버가 갖고 있는 rbnode를 확인해요.crash64> p wakelocks_treewakelocks_tree = $2 = { rb_node = 0xffffffc0e397b108} wakelocks_tree에 등록한 인스턴스를 아래 wakelock_node 변수로 리다이렉트합니다.tree -t rbtree -o wakelock.node -N 0xffffffc0e397b108 > wakelock_node wakelock_node 값을 확인해볼까요? 아
[Linux][Kernel] fd(file descriptor: 파일 디스크립터) 디버깅 CrashTool
By Guillermo Austin Kim | 2017년 12월 20일 |
"echo c > /proc/sysrq-trigger" 명령어로 강제 커널 패닉을 유발시킨 다음 코어 덤프를 받아 보았어요.crash> bt -I C01003AC -S C59C3E20 0xD110E040PID: 4944 TASK: d110e040 CPU: 0 COMMAND: "sh" #0 [<c01003ac>] (do_DataAbort) from [<c0fde6a0>] pc : [<c0524b88>] lr : [<c0fdde2c>] psr: 60010013 sp : c59c3f10 ip : c1920700 fp : bee5765c r10: 00000000 r9 : acf2a284 r8 : 00000000
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