debugging (3) 썸네일형 리스트형 [KernelCrash] panic due to voltage droop in the specific device Kernel panic log 2107.232713 / 01-01 11:11:03.809][7] init: cannot find '/system/bin/qrngp' (No such file or directory), disabling 'qrngp'[ 2107.239317 / 01-01 11:11:03.809][5] Unable to handle kernel NULL pointer dereference at virtual address 00000028[ 2107.239351 / 01-01 11:11:03.809][5] pgd = e37ec000[ 2107.239366 / 01-01 11:11:03.809][0] [00000028] *pgd=00000000[ 2107.239388 / 01-01 11:11:0.. [Liunx][Kernel] Abort at __list_del_entry() inside process_one_work() Debugging Kernel panic occurs at 68 line inside __list_del_entry() whose caller function is process_one_work().Code Review at the moment of kernel panic 49void __list_del_entry(struct list_head *entry)50{51 struct list_head *prev, *next;5253 prev = entry->prev;54 next = entry->next;5556 if (WARN(next == LIST_POISON1,57 "list_del corruption, %p->next is LIST_POISON1 (%p)\n",58 entry, LIST_POISON1.. [리눅스커널][Trace32] T32로 wakelock 디버깅 - container_of 함수 분석 임베디드 개발에서 T32-Trace32 장비를 많이 써서 소스 코드 디버깅을 합니다. 이번 시간에는 리눅스 커널에서 웨이크락(wake lock)을 잡는 모듈이 누구인지 파악하는 디버깅(Debugging) 방법을 소개합니다. 리눅스 커널는 wakeup_sources이란 연결 리스트를 통해 wakelock 정보를 확인할 수 있습니다. 리눅스 커널 개발자 중에 crash-utility을 잘 쓰는 분이 있습니다.하지만 임베디드 개발에선 Trace32도 더 많이 활용하는 것 같습니다.개발자는 다양한 툴을 써야 한 가지 툴에 종속된 노예 개발자가 되는 것을 피할 수 있습니다.또한 각 툴의 장점을 잘 활용할 수도 있습니다. 먼저, 다음 T32 명령어를 입력해서 offsetof와 container_of 매크로를 생성합..