CUDA사용시 MiniDumpWriteDump()실패

게임 클라이언트에서 크래시 발생시 덤프파일을 생성하도록 해놨다. 데스크탑버전은 적용이 되어있는데 UWP는 적용이 안되어있어서 UWP에도 적용하려고 데스크탑버전의 덤프생성 코드를 테스트했다. 그런데 문제 발생. 어라? 근데 덤프 생성에 문제가 있다. 덤프파일은 만들어졌지만 정상적으로 디버거에서 읽히지 않는다. MiniDumpWriteDump()함수가 실패하네? 해당 에러값으로 이틀동안 구글링을 해봐도 도움되는 답이 없다. 테스트를 하다보니 64비트에서만, MiniDumpWithFullMemory플래그를 줄 경우만 발생하는걸 알게 됐다. ’64비트는 뭐가 … More CUDA사용시 MiniDumpWriteDump()실패

2013년의 어느날 디버깅 메모(windbg)

2013년 12월 27일 , Project D Online 출시 준비할때였다. 첫번째 보스(벽에서 미사일 쏘는 보스-혼두라 모티브)랑 싸우고 나오면 나와서 맵체인지 할때 게임이 멈추는 증상이 있었다. 멈춘다고 하는것은 플레이어 입장이고 정확하게 얘기하자면 데드락 아니면 무한루프인데 이 경우는 데드락이었다. 데드락은 데드락인데 그게 어플리케이션이 사실상 크래시한거고 크래시에 의한 데드락이었다. 버그 재현도 잘 되지 않아서 엄청나게 절망했었다. 최초 같은 사무실에 … More 2013년의 어느날 디버깅 메모(windbg)

Debugging – App의 명시적 종료의 필요성

적어도 디버그 빌드에 한해서라도 어플리케이션은 반드시 명시적 종료가 있어야한다. 명시적 종료 상황에서 힙을 비롯한 모든 리소스가 완전하게 해제되었는지 체크할 수 있어야 한다. 무엇보다 heap이 손상되었는지를 체크할 수 있어야한다. 명시적 종료할때 이걸 체크하지 않으면 눈에 띄지 않는 버그가 계속 쌓임. 시한폭탄임. 실제로 내가 만들던 게임 서버에서 그런 사건이 있었다. 사내 테스트 하루 전날 팀 내 플레이 … More Debugging – App의 명시적 종료의 필요성