Guillermo Austin Kim

Sources

Posts

998 posts

tombstone 시(시스템 크래시) - 커널 패닉 유발

Guillermo Austin Kim|2017년 12월 6일

userspace에서 tombstone(무덤)이 떨어지면서 크래시가 종종 발생합니다.에러 시그니처는 아래와 같아요. 흠...Revision: '0'ABI: 'arm'pid: 1558, tid: 1891, name: RenderThread >>> com.google.launcher2

Spinlock(스핀락) - Deadlock 시나리오

Guillermo Austin Kim|2017년 12월 6일

자자, 이제 A, B, C 모듈에서 spinlock을 순서대로 잡는 시나리오를 만들어 볼께요.spinlock value는 특정 메모리 공간에 있는 전역 변수와 같다고 보면 되요. 1. A 모듈이 스핀락을 겁니다.spinlock valuenext | owner0001 0000 2. B 모듈이 스핀락을 겁니다. 자 이때 A모듈이 스핀락을 잡고 있어요. spinlock value next | owner 0001 0000 //<<-- arch_spin_lock() 진입 전 next값을 로컬 변수에 저장, 자 그럼 로컬 변수 lockval.tickets.next=1, lockval.tickets.owner=0 이겠죠 0002 0000 // spinlock value next를

vmalloc - debugging(1)

Guillermo Austin Kim|2017년 12월 6일

자, 이제 vmap_area_list 변수 T32로 올려서 좀 들여다 볼까요? (static struct list_head) [D:0xC124E630] vmap_area_list = ( (struct list_head *) [D:0xC124E630] next = 0xDE8026D8, (struct list_head *) [D:0xC124E634] prev = 0xDD85F258) 링크드 리스트이니 좀 T32의 비주얼 속성을 좀 써볼께요.(출처: 참 항목이 많네요.do _fake_list_sym.cmm 0xC124E630 0x0 (0)| [C:0xC124E630] ( | [C:0xC124E630] next = 0xDE8026D8, | [C:0xC124

vmalloc - overview(1)

Guillermo Austin Kim|2017년 12월 6일

vmalloc에 대해서 리뷰를 해보려고 합니다.vmalloc이라. 이 놈도 리눅스 커널 책에서 엄청나게 많이 소개가 되고 있죠. 너무나도 좋은 글들이 있지만 vmlloc을 쓸 때를 허접하게 요약하면 아래와 같아요.1> 물리적으로 연속적이지 않은 메모리를 할당하고 싶을 때.2> 큰 사이즈의 가상 메모리 공간을 확보하고 싶을 때. 흠냐. 이게 뭔 소리지? 사실 전 머리 속에 개념이 잘 안 들어오더라구요.자, 코드 좀 살펴볼께요. 우선 vmalloc을 관리하는 핵심 변수를 소개하자면 vmap_area_list 이 분들 소개 안 할 수 없네요.LIST_HEAD(vmap_area_list); vmap을 관리하는 링크드 리스트가 vmap_area_list인데요, __insert_vmap_area 함수

[Linux][Kernel] ftrace: stack tracer

Guillermo Austin Kim|2017년 12월 6일

리눅스 커널에서 제공하는 여러 profile tool 중에 ftrace가 있어요. 매우 강력해요. 잠깐 기억하는게, 저번 리눅스 커널 세미나에 갔었을 때 리눅스 커널 고수들이 ftrace로 벌이는 향연을 보고 참 라이브 공연에 있는 듯한 착각을 받았어요. ftrace 기능 중 stack tracer 기능을 잠깐 소개하고자 해요. 리눅스 커널 고수들 ftrace 로그를 밥 먹듯이 본다고 하네요. 저도 밥 먹듯이 보고는 있지만, 영 실력이 느는 것 같지 않아 짜증이 나지만요. 우선 stack tracer 기능을 좀 소개하려고 해요. 기능도 참 강력해요. 아래와 같이 커널 Config를 설정합니다.--- a/arch/arm/configs/pompeii_com_defconfig+++ b/arch/arm/conf