GDB record full로 역방향 디버깅하기 — 하드웨어 카운터 없이 되감는 rr 대안
워치포인트로 "이 변수가 언제 바뀌는지"는 잡을 수 있어도, 그 값이 왜 그렇게 됐는지 되짚어 올라가려면 결국 브레이크포인트를 다시 걸고 처음부터 재실행하기를 반복하게 된다. Mozilla의 rr 같은 record-and-replay 디버거는 실행을 통째로…
워치포인트로 "이 변수가 언제 바뀌는지"는 잡을 수 있어도, 그 값이 왜 그렇게 됐는지 되짚어 올라가려면 결국 브레이크포인트를 다시 걸고 처음부터 재실행하기를 반복하게 된다. Mozilla의 rr 같은 record-and-replay 디버거는 실행을 통째로…
PID 기반 프로세스 관리(os.kill(pid, sig), os.waitpid(pid, ...))에는 근본적인 문제가 있다. PID는 재사용된다. 어떤 프로세스가 죽고 그 PID가 회수되면, 커널은 그 번호를 완전히 다른 새 프로세스에 다시 배정할 수 있다. 자식…
로컬 디스크가 부족하거나, diskless 클라이언트를 원격 스토리지로 부팅해야 하거나, 원격에 있는 이미지 파일을 로컬 블록 디바이스처럼 다루고 싶을 때가 있다. iSCSI가 이런 용도의 표준이지만 타깃 설정이 상대적으로 번거롭다. NBD(Network Block…
KASAN은 힙 오버플로우나 use-after-free를 잡아내는 데 강력하지만, 모든 할당에 리다이렉션 존(redzone)과 섀도 메모리 검사를 붙이는 방식이라 오버헤드가 크고 프로덕션에 상시 켜두기는 부담스럽다. KFENCE(Kernel Electric-Fence)는 이 문제를 확률적 샘플링으로 우회한다 —…
ARM GICv3의 컴포넌트 구성과 초기화 흐름은 별도 글에서 다뤘다. 그런데 막상 각 레지스터를 읽고 쓰는 실제 커널 코드를 보면 writel_relaxed() 한 줄로 끝나는 경우가 드물다. 하드웨어에 값을 쓴 뒤 그…
GICv2는 아키텍처상 PE(Processing Element, 코어)를 최대 8개까지만 지원한다. 서버·모바일 SoC의 코어 수가 계속 늘어나면서 이 상한이 실제 병목이 됐고, ARM은 GICv3에서 Distributor 하나가 모든 코어를 직접 상대하던 구조를 버리고 코어마다…
리눅스재단(The Linux Foundation)이 2026년 8월 11~12일 서울 그랜드 인터컨티넨탈 파르나스에서 '오픈소스 서밋 코리아(Open Source Summit Korea) 2026'을 개최합니다. 리눅스재단이 국내에서 단독 서밋을 연 것은 2025년이 처음이었는데, 이번이 두 번째 개최입니다.…
취약점 스캐너가 "이 패키지에 CVE가 있다"고 보고하면 대개 apt upgrade 한 번으로 끝냈다고 여기기 쉽다. 하지만 패치가 실제로 설치됐는지, 그리고 그 패치가 해당 CVE의 익스플로잇 경로를 실제로 막았는지는 별개의 질문이다.…
락 경합(lock contention)은 멀티코어 시스템에서 흔한 성능 병목 원인이다. CPU 사용률은 높은데 실제 작업 처리량은 그대로거나 오히려 떨어진다면, 스레드들이 실제 일을 하는 대신 서로 락을 기다리며 시간을 보내고 있을 가능성이…
업스트림 커널 소스를 --depth 1로 clone해서 rust_minimal.o를 빌드하는 데는 성공했지만, 그건 지금 부팅된 우분투 배포 커널과는 버전이 다른 별개의 트리였다. 실제로 insmod까지 되는지 확인하려면 "지금 이 컴퓨터가 실행 중인 커널"…