언제까지 고칠 수 있겠니?

“재호야, 문제 원인은 찾았니? 언제까지 고칠 수 있겠니?”
“휴… 잘 모르겠어요.”
“난 네가 모르겠다고 말하는 게 제일 무서워.”

저에게는 이사님이 제 자리에 와서 언제까지 되겠니 묻는 게 가장 무서운 순간이었는데…
이사님은 제가 잘 모르겠다 말하는 게 가장 무섭다고 합니다.
서로가 무서운 이 웃픈 상황.

늦어도 좋으니 제발 일정을 알려 달라고.
이사님의 입장도 이해는 했습니다. 일정이 정해져야 영업팀과 운영팀에 알려서 고객들과 커뮤니케이션을 할 테니까.
하지만 정말 모르겠는 걸 어떡해… 함부로 말하다가 약속을 못 지키면?
그야말로 죽을 맛이었습니다. 어디가 문젠지 짐작도 안 가는데, 일정의 독촉은 계속 되고...
개발하면서 이렇게 스트레스받았을 때가 있었던가?

그건 파일 시스템 드라이버를 만들 때 였습니다.
(N:에 마운트 하는 네이버 클라우드 탐색기를 떠올리시면 됩니다.)

윈도우를 며칠간 사용하다 보면 메모리가 사용량이 조금씩 높아진다는 제보들이 있었습니다.
처음엔 그게 우리 드라이버 때문인지 믿을 수가 없었습니다.
하지만 사내 사용자들의 제보도 계속 이어졌고, 문제를 찾기 위해 애쓰는 날들이 계속됐습니다.

애플리케이션과는 달리 커널 코드에서 메모리가 새면 찾기도 어려울뿐더러 컴퓨터를 껐다 켜기 전까지는 해소가 되지 않습니다. 지옥 같은 날들을 지나, 결국 어떤 부분에서 그러는지를 찾아냈습니다.

버그 제보를 받은 날부터 고치기까지 한 달쯤 걸렸던가?
아침에 눈을 뜨면 한숨부터 나오면서 회사 가기가 무서웠던 날들이었습니다.

오늘 편안하게 앉아서 창밖을 바라보다 문득 이때 생각이 났습니다.
회사를 그만두고 이런 압박이 없어져서 정말 다행입니다만… 생각해 보니 이런 압박 덕분에 결국 문제를 해결해 내고 성장할 수 있었던 것 같습니다.
그래도 이 정도로 스트레스받아가며 여생을 살고 싶진 않네요. (웃음)

* TMI 토킹
오래된 기억이지만 문제는 FsRtlNotifyFullReportChange 의 구현 때문이었습니다.

만약 똑같은 경로에서 윈도 탐색기 두 개를 열어 놓고,
한 쪽에서 파일 하나를 생성하면 다른 쪽 탐색기에서도 새로 만들어진 파일이 곧장 보여야 합니다.

이건 윈도 탐색기가 ReadDirectoryChangesW 함수를 잘 구현해 줬기 때문에 되는 일이기도 하지만, 파일 시스템에서도 FsRtlNotifyFullReportChange 를 구현해 줘야만 합니다.
파일 시스템에서 이 부분을 구현 안 하면 애플리케이션에서 아무리 디렉터리 변경을 기다리고 있더라도 통지가 오지 않게 되는 것입니다.
이 함수를 어떻게 구현해야 한다고 자세하게 알려주는 문서는 없었습니다. 우리는 다행히 이 부분을 잘 구현해둬서 파일 알림 통지가 잘 되고 있었는데… 통지만 잘 될 뿐 여기서 메모리가 새고 있었던 것입니다. 너무 적게 새어나가고 있어서 찾을 수가 없을 정도로.
이 버그를 완전히 고쳤을 때 얼마나 기뻤던지.

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2025년 1월 6일 오전 7:46

 • 

저장 42조회 3,950

댓글 3