CRASHTOOL
Posts
10 postscrash-utility(crash tool) - ps command
커널 패닉 디버깅할 때 crash-utility를 아주 많이 쓰죠. 수 많은 명령어 중 ps를 소개하려고 합니다. ps -p 프로세스 전체의 부모와 자식 프로세스 정보를 보여줘요.crash64> ps -pPID: 0 TASK: ffffffc001580e40 CPU: 0 COMMAND: "swapper/0" PID: 0 TASK: ffffffc001580e40 CPU: 0 COMMAND: "swapper/0" PID: 0 TASK: ffffffc0f865f300 CPU: 1 COMMAND: "swapper/1" PID: 0 TASK: ffffffc001580e40 CPU: 0 COMMAND: "swapper/0" PID: 0 TASK
Kernel][Panic] 메모리 불량 커널 크래시@find_vma_links - 1
특정 디바이스가 부팅 후 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
ARM64- 스택 푸쉬(Stack Push) Userspace -> Kernel Space
유저 스페이스에서 커널 스페이스로 전환하려면 시스템 콜을 호출해야 한다 것은 마르고 닳도록 들었죠?이번에는 ARM64 Architecture에서 EL0 ->EL1로 변환될 시, Stack을 어떻게 Push하는 지 살펴볼께요. "rild"란 프로세스의 콜스택을 예를 들어 볼 께요. 잘 보면, 유저 공간에서 sendto란 시스템 콜을 호출했다는 걸 알 수 있네요.-000|do_mem_abort()-001|el1_da(asm) -->|exception-002|ch_pop_remote_rx_intent()-003|glink_tx_common()-004|glink_txv()-005|ipc_router_glink_xprt_write()-006|msm_ipc_router_write_pkt(inline)-00
Runqueue(런큐) Timestamp(실행 시간) 확인
보통 커널 크래시나 와치독 리셋으로 시스템이 다운된 경우 세밀하게 디버깅해야 할 때가 있어요.그런데 가끔 각 프로세스가 마지막에 어떤 순서로 실행이 됐는지 확인하고 싶을 경우가 가끔 있거든요.이 순서가 가끔 정말 중요한 순간이 가끔 있어요. 아래는 런큐에서 돌고 있는 프로세스 목록이거든요. 그럼 각각 프로세스가 어떤 순서로 실행이 되었는지 알 수 있을까요?crash64> runq -m CPU 0: [0 07:36:22.901] PID: 585 TASK: ffffffc071eb8b80 COMMAND: "android.hardwar" CPU 1: [0 07:36:22.901] PID: 726 TASK: ffffffc0f6e3f300 COMMAND: "DispSync" CPU 2: [0


![[웹툰단행본] 『통제구역관리부』 1권 후기 : 이상한 변칙과 기이한 일들이 일어나는 공간에 대하여](https://img.zoomtrend.com/2026/06/09/1780996474-SE-5eda86fa-0d63-4afd-b8dd-b801879fed52.jpg)
