CRASH-UTILITY
Posts
9 postswatchdog reset - race in ipv6_ifa_notify() - 리눅스 커널
예전 MTK SoC에서 일어났던 Watchdog Reset 이슈인데요. 디버깅 정보를 조금 공유하고자 해요. CPU1에서 수행 중인 "migration/1" process에서 watchdog reset이 발생하여 시스템이 리셋된 흔적을 확인할 수 있어요.-000|do_undefinstr()-001|__und_svc_fault(asm) -->|exception-002|aee_wdt_atf_info()-003|aee_wdt_atf_entry()-004|debug_smp_processor_id()-005|cpu_stopper_thread()-006|smpboot_thread_fn()-007|kthread()-008|ret_from_fork(asm)-009|ret_fast_syscall(asm) MTK S
crash-utility - wakelock 디버깅
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 값을 확인해볼까요? 아
crash-utility(crashtool) - 리다이렉션 커맨드
가끔 모든 프로세스의 스택 주소를 알고 싶을 때가 있어요. 이럴 때 쓰면 좋은 명령어가 있어 소개합니다. 이 기능이 Trace32보다 확실히 좋은 것 같아요. 우선 init process의 TCB(Task descriptor) 주소를 파악해요.흠, 0xffffffc001580e40이네요.crash64> p &init_task$1 = (struct task_struct *) 0xffffffc001580e40 모든 프로세스들이 task_struct.tasks 링크드 리스트에 매달려 있잖아요?그럼 아래 명령어를 쳐서 task_addr란 파일로 리다이렉트 시켜요.list task_struct.tasks -h 0xffffffc001580e40 > task_addr
crash-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


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