반응형

MemoryLeak 2

안드로이드 네이티브 메모리 누수 분석: Malloc Debug, Libmemunreachable, ASan 활용 가이드

[내용요약]문제: 안드로이드 시스템 장기 구동 시 Native Daemon 및 HAL 프로세스의 가상 메모리 크기(VSS)와 상주 메모리 크기(RSS)가 지속적으로 증가하다가 결국 커널 OOM(Out of Memory) Killer에 의해 프로세스가 강제 종료(SIGKILL)되는 현상 발생.원인: C/C++ 기반 네이티브 레이어에서 dynamic allocation 후 free() 또는 delete 연산자가 누락되거나, 스마트 포인터의 순환 참조(Circular Reference)로 인해 힙 heap 메모리 해제가 누락되는 현상.해결책: AOSP 환경에서 Malloc Debug를 활성화하여 동적 할당 스택을 추적하고, libmemunreachable을 통해 런타임에 메모리 가비지 컬렉션(GC) 스타일의 ..

eBPF 기반 리눅스 커널 메모리 누수(Memory Leak) 및 좀비 프로세스(Zombie Process) 추적 가이드

내용 요약현상: 장시간 구동 시 메모리가 지속적으로 감소하고 [defunct] 상태의 좀비 프로세스가 쌓여 PID 자원이 고갈됨.원인: 메모리 할당 후 해제(free/kfree)가 누락되는 메모리 누수와, 종료된 자식 프로세스의 수거(waitpid)가 누락되는 좀비 프로세스 누적.해결: eBPF 기반의 kprobe/uprobe를 활용해 메모리 할당·해제 이벤트를 실시간으로 추적 및 대조하여 누수와 고립 리소스를 탐지.리눅스 시스템 메모리 고갈(Memory Exhaustion) 및 좀비 프로세스 누적 증상리눅스 기반 임베디드 장치 및 서버 환경을 장기 운용할 때, 물리 메모리(RAM)의 여유 공간이 서서히 줄어들다가 결국 커널의 OOM Killer (Out of Memory Killer)가 동작하여 데몬을..

반응형