Home

살아생전 처음 보는 희한한 버그를 경험했습니다. [괴담]

2024/04/23 16:48 KST


지난 월요일(2024/04/22), 기획자님이 가족 여행 관계로 휴가를 가 계시는 와중에 업데이트를 진행할 일이 생겼습니다.

업데이트 내용은 대략 다음과 같았습니다:

코드상 특별히 민감한 부분이 바뀐 점은 없었고 단순 데이터 변경, 오브젝트 배치 변경 등이 주된 내용이어서 가벼운 마음으로 라이브에 배포를 하고 왔습니다.

10분 뒤, 제주도에서 기획자님이 버그가 생긴 것 같다며 급하게 연락을 하셨습니다.

문제 상황

갑자기 모바일 환경에서 UI 텍스트들이 깨지기 시작했습니다. 그것도 특정 UI만 깨지는 게 아니라 모든 월드 좌표 UI들에 대해 이 현상이 발생하기 시작했습니다. (테스트를 PC로 진행했던 탓에 전혀 확인하지 못했습니다.)

팀장님이 PC 접속을 끊고 본인 휴대전화로 테스트한 결과 같은 현상을 확인할 수 있었고, 갑자기 발등에 불이 떨어진 저는 버그 발생 원인을 급하게 확인해야 했습니다.

해결 과정

이쯤에서 로블록스 프로젝트들의 툴체인에 대해 설명해야 할 것 같습니다.

로블록스는 기본적으로 외부 코드 에디터를 지원하지 않고 파일 시스템을 사용하지도 않습니다. 프로젝트 내 모든 변경사항은 로블록스 클라우드에 저장되며 파일 형태로 나오지 않아 Git 등 버전 관리 시스템으로 추적할 수 없습니다. 대신 로블록스 클라우드가 자체적으로 버전 관리를 하긴 하는데, Ctrl+S를 누른 시점을 기준으로 버전이 나눠져서 예전 버전을 불러올 수 있는 기능이 있습니다.

일단 버그가 UI쪽에서 생겼으니 당연히 UI에 생겼던 변경사항들을 제일 먼저 의심할 수밖에 없고, 일단 해당 코드들만 모두 롤백한 상태에서 테스트를 해 봤지만 버그는 여전했습니다.

전혀 감이 잡히지 않아 이 회사에서 제일 오래 로블록스 개발을 한 선배님께 질문을 드렸지만 본인도 처음 보는 버그라는 답변만 들을 수 있었습니다.

결국 '어디서 문제가 생겼는지 모르겠다. 예전부터 있었던 문제인지를 확인하기 위해 개발 서버를 지난 주 금요일 버전의 빌드로 롤백하겠다' 선언을 했습니다.

버그는 없었습니다. 일단 지난 주 금요일 ~ 이번 월요일 사이에 생긴 버그인 것은 확실해 보입니다. 하지만 무엇이 문제인지는 전혀 알 수 없는 상황이었습니다. (하필이면 제 휴대폰으로는 버그 재현이 안 됐던 탓에) 팀장님께 양해를 구하고 지금부터 어느 버전에서 버그가 생겼는지 업다운으로 알아내야 한다고 말씀을 드렸습니다.

지난 금요일부터 월요일까지 Ctrl+S가 눌린 횟수는 총 39번입니다. 업다운 게임 하는 식으로 절반씩 경우의 수를 줄이면 대략 5번의 테스트 안에 어느 버전에서 버그가 생겼는지를 알아낼 수 있습니다. 그렇게 저는 그 날 총 4번의 업다운을 진행하게 되었습니다...

무엇이 문제였는가

문제가 생긴 버전은 #2457이었습니다. 게임 내 로비 공간에 있는 오브젝트들의 배치를 변경한 버전이었는데, 쌈박하게 오브젝트들을 하나씩 예전 버전으로 돌리고 테스트를 진행하며 어느 시점에 버그가 사라지는지 지켜봤습니다.

그다지 오래 걸리지 않았습니다. 게임 내 플레이어들의 랭킹을 표시해주는 빌보드를 예전 위치로 옮기자마자 버그가 사라졌습니다.

중요한 점은, 이 버전과 이전 버전의 랭킹 빌보드의 다른 점이 위치와 크기밖에 없었다는 것입니다.

진짜로 Scale 늘리고 Position 옮긴 게 다였습니다. 코드는 건드린 적도 없고 하이어라키 같은 게 특별히 바뀐 것도 아니었습니다.

그런데 버그가 사라졌습니다...

결론

오브젝트 배치를 바꾼 것만으로 버그가 사라졌다니 정말 말도 안 되는 상황이지만, 말이 안 되고 자시고 일단 버그가 사라진 것은 저도 확인하고 팀장님도 확인한 사실이니 원인규명은 미뤄두고 일단 저 빌보드만 교체한 상태로 라이브에 올리기로 했습니다.

빌보드를 교체한 버전의 라이브는 신기하리만치 멀쩡했습니다.

버그가 사라져서 일단 기쁘기는 한데, 대체 왜 오브젝트 크기, 위치가 바뀌었다는 이유만으로 이런 버그가 발생한 걸까요? 내부 구조가 전혀 공개되지 않는 플랫폼 특성상 그 원인을 정확히 규명하기는 어려울 것입니다.

이런 '블랙 박스'가 존재하는 환경에선 유독 프로그래머들 사이에서 이런저런 샤머니즘, 토테미즘적 미신이 생기곤 하는데, 저는 사실 이런 주술적인 행위를 별로 신뢰하지 않았습니다.

하지만 이제부터 이 녀석이 저의 싸이버 디버그 신사이며, 누구라도 이 디버그 신사를 건드리거나 위치를 옮기려고 하는 자가 있다면 저는 풍수지리든 사주명리학이든 암흑부두주술이든 뭔가 초자연적인 힘을 사용해서 아무도 디버그 신사를 건드리지 못하게끔 할 것입니다.

-끝-