한 5년정도 전부터 만들어서 업글해나가고 있는 3D 엔진을 쓰고 있습니다.
근데 어제, 어이없는 버그가 발견되었어요.

DirectX 의 Device 를 Reset 할때마다 GDI 가 한개씩 증가하는 문제였어요.
이게 눈에 잘 띄지 않는 문제라 지금까지 문제없이 사용해온 것인데요,
실시간으로 계속 Reset 을 해야 하는 상황에서 이 문제가 불거진거죠.
GDI 가 계속 증가... 나중에 리소스 부족으로 꽥.

결국 버그를 찾아냈는데요,
창모드에서 DX 를 초기화할때 화면의 BPP(Bit per pixel)가 필요한데
(요즘은 다들 32비트로 쓰지만, 예전에는 16비트 화면도 많이들 썼지요...)
이걸 얻기 위해서 화면의 Handle을 얻어와야 했어요.
Handle을 얻고 나서 그걸 이용하는 코드가 다 수행된 다음에는
Handle을 다시 Release 해줘야 하는데, 그걸 안했던거죠.

보통때에는 DX 초기화를 여러번 할 일이 거의 없지만,
이번 경우에는 초당 수십번씩 초기화가 일어나는 상황이었어요.
(이게 필요할 일이 있겠냐 싶지만, 회사 프로젝트에서 꼭 필요한 순간이 있었다는....-.-)
암튼, 결국 회사 프로젝트에 엮이는 바람에 발견된 버그랍니다.

일단 발견되고 나니 워낙 초보적인 실수라 금방 해결했지만요.
오래도록 사용하고 있는 엔진도 이렇게 버그가 남아있다는 것과,
별것 아닌 문제가 경우에 따라선 큰 에러를 일으킬 수도 있다는 것.
그리고, 항상 겸손해야겠다는 것을 새삼 느끼게 되었습니다.

P.S.
오늘은 잠도 많이 부족하고 배도 고프고 해서 영 일에 집중을 못하겠네요.
하루종일 트윗질 하다 잠시 쉬려고 블로그질... (^-^)>

Posted by moonyeom

2010/10/21 11:45 2010/10/21 11:45
, , , , ,
Response
No Trackback , No Comment
RSS :
http://www.arcshock.com/kr/rss/response/60