패치 이모저모 – 4.8.2

4.8.2 버전은 예정에 없었던 패치였습니다. 그런데 쿨엔조이의 한 게시글에서 나래온 툴 서비스가 비정상적인 메모리 사용을 보여주는 걸 보고 깜짝 놀라 수정을 하게 되었습니다.

나래온 툴 수명 감시 서비스는 다음과 같이 세 단계 동작을 합니다. 그 중 일단 어느 부분이 문제가 되는지 확인할 필요가 있었습니다.

나래온 툴 수명 감시 서비스의 프로세스

서비스를 켜 봅니다. 메모리가 꾸준히 샙니다. 그 말인 즉슨 무한 루프 과정에서 문제가 생겼음을 의미합니다.  무한 루프 중간에 여러가지를 지워본 결과 코드의 조건 중 하나가 반대로 되어있었음을 확인할 수 있었습니다. 즉 거짓이면 할당해야 하는데 참이면 할당하게 되어있으므로 참 → 할당 → 참 → 할당…을 반복하고 있었습니다. 또한 원래 할당시 전에 할당해두었던 걸 해제하는 코드도 있어야 하는데 이 부분 또한 없음을 확인하고 코드를 바꾸었습니다. 한 가지만 바꾸었다면 다른 버그를 불러왔을 수도 있는데, 운이 좋았던 편이라고 할 수 있습니다.

요새 C#이나 Java 등 GC 언어가 대세가 되어가는 이유를 어느 정도 알 수 있었던 패치였습니다. 3년 차에 접어든 나래온 툴이 실수 하나로 메모리를 질질 흘리고 다닐 거라고는 예상조차 하지 못했습니다. 티끌 모아 태산이랬다고 메모리 누수는 언제나 조심해야 할 문제라는 사실을 깨달았습니다.