DEBUG
Posts
15 posts[Linux][Kernel] T32 - Linked List 디버깅 cmm Script
리눅스 커널 데이터 스트럭쳐 내 수 많은 linked list를 확인할 수 있어요.예를 들어 struct kset이란 구조체도 첫번 째 멤버로 list란 링크드 리스트죠. struct kset { struct list_head list; //<<-- spinlock_t list_lock; struct kobject kobj; const struct kset_uevent_ops *uevent_ops;}; 실제 코어 덤프를 T32로 열어서 상세 구조체를 보면 아래와 같거든요.kset_find_obj( [R5] kset = 0xED74A980 -> ( [NSD:0xED74A980] list = ( //<<-- [NSD:0xED74A980] next = 0
[Linux][Kernel] 전처리 Preprocess File 추출 방법
한 4년 전 인가요? 아래 코드를 열심히 분석 했었어요. 그런데 나중에 알고 보니 CONFIG_KMEMCHECK, CONFIG_LOCKDEP 컨피그 내 코드가 컴파일 되지 않는 죽은 코드라는 걸 알게 되었어요. 그 때 참 머리를 쥐어 뜯으며 자책했죠. static inline void slab_free_hook(struct kmem_cache *s, void *x){ kmemleak_free_recursive(x, s->flags); /* * Trouble is that we may no longer disable interrupts in the fast path * So in order to make the debug calls that expect irqs to be * disabled w
[Kernel] memory leak - debug
가끔 가다가 커널 메모리 누수(memory leak) 이슈가 생길 때가 있어요.OOM Killer가 메모리가 부족하다고 커널이 메시지를 남기며 스스로 자살을 하거나,Low Memory Killer가 너무나도 자주 돌아서 락업 현상으로 검출되죠. 이런 이슈가 나왔을 때 어떻게 디버깅을 하면 좋을까요?한번 정리 좀 해볼께요. 1. 디버그 정보: contig_page_data.node_zones[0--1].free_area 우선 중 High/Low 메모리 Zone 중 어떤 Zone에서 페이지가 부족한 지 점검할 필요가 있어요.만약에 Low 메모리 존에서 메모리가 부족하면 커널 동작으로 포커스를 맞추어야 하구요,아래 경우와 같이 High Memory Zone에 Order 별로 free 페이지가 거의 없으면 더


