리눅스 커널 spinlock·mutex 오용 디버깅 — DEBUG_SPINLOCK, DEBUG_MUTEXES, lockdep 실측 비교
스핀락(spinlock)과 뮤텍스(mutex)를 잘못 쓴 커널 코드는 대부분 조용히 지나간다. 초기화하지 않은 스핀락은 0으로 채워진 메모리라 x86에서는 그냥 동작하고, 스핀락 안에서 호출한 kmalloc(GFP_KERNEL)은 메모리가 넉넉하면 잠들지 않으니 아무 일도 없다. 그러다…
스핀락(spinlock)과 뮤텍스(mutex)를 잘못 쓴 커널 코드는 대부분 조용히 지나간다. 초기화하지 않은 스핀락은 0으로 채워진 메모리라 x86에서는 그냥 동작하고, 스핀락 안에서 호출한 kmalloc(GFP_KERNEL)은 메모리가 넉넉하면 잠들지 않으니 아무 일도 없다. 그러다…
서버나 임베디드 장비에서 특정 CPU가 갑자기 응답하지 않으면 원인을 찾기 어렵다. 인터럽트조차 처리되지 않을 정도로 멈춰 버리면 로그 한 줄 남기지 못하고 시스템이 그대로 굳어버릴 수도 있다. Linux 커널은 이런…