Postgres C 코드에서 메모리 누수 찾기
필 이튼2024년 3월 27일 지난주 동안 Postgres의 WAL Sender 프로세스에서 메모리 누수를 찾는 작업을 했습니다. Valgrind와 gcc/clang의 Sanitizer를 더 잘 이해하기 위해 며칠을 보냈지만, 결국 그들로부터는 유용한 결과를 얻지 못했습니다. 마침내 bcc 도구 모음에 포함된 memleak 프로그램을 발견했고, 이를 통해 문제의 원인을 바로 찾아낼 수 있었습니다. 처음 이 과정을 이해하는 데 약간 어려움이 있었기 때문에, 제가 거친 과정을 공유하고자 합니다. 이 글에서는 의도적으로 메모리 누수를 유발하는 코드를 사용해 실험합니다. 비록 Postgres에서 발생한 일이긴 하지만, 이 글에서 Postgres에 누수를 도입하여 조사를 시작한다는 점을 제외하면 이 기술들은 폭넓게 유용합니다. 특히, 이 글의 마지막에는 실행 중인 프로그램을 수정하지 않고도 메모리 누수로 이어지는 스택 트레이스를 확인하는 방법을 알 수 있습니다. Valgrind 컴퓨터 공학을 전공하는 […]