• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

데드락 탐지 건에 대해서 질문이 있습니다.

23.08.17 01:26 작성 조회수 273

0

안녕하세요,
데드락 탐지 건에서 질문을 하고 싶습니다.

제가 강사님 프로젝트를 다운받아서 코드를 제대로 살펴보았음에도 육안으로 구분한 것이라 제가 간과한 부분이 있을 수도 있습니다.

영상 마지막 부분에 std::stack<int32> 부분은 선언하지 않고, 순전히 영상 전의 내용과 고친 부분의 후로 나뉘기는 하지만 결과는 동일합니다.

결과적으로는 무한루프가 발생하는데,
이게 DFS 내부적인 로직이 꼬여서 무한루프가 발생하는 것인지, 아니면 스레드 끼리의 DeadLock 으로 인해서 생긴 무한루프 때문에 충돌이 난 것인지 제가 확인을 할 방법이 없습니다. (정확히는 디버깅 미숙 숙련도 이슈입니다.)

혹시 어디 부분이 제가 빠트렸거나 유추 가능한 원인요인들이 있을까요?

daadLock.pnghttps://drive.google.com/file/d/1HYHZMhf6wkkHxvqLIpAU1-SsSNKS4rO3/view?usp=drive_link

답변 1

답변을 작성해보세요.

2

영상 마지막 부분의
thread_local std::stack<int32> LLockStack;
은 꼭 넣어주시고 그거에 맞게 코드를 수정해야 합니다.
그러면 문제는 해결됩니다!
추가 후 ServerCore를 다시 빌드했는지 꼭 확인해보세요.

두 번째로는 디버깅 숙련도 미숙하신 상황을 인지하셨으면
가급적 며칠이 걸리더라도 헤딩을 해서
디버깅 실력을 키우고 연습을 더 하셔야 합니다.
회사에 가서 이런 상황이 발생하면
느긋하게 상사한테 찾아달라고 할 수 없기 때문이죠.
디버깅이 아니라 알고리즘 이해도가 부족해서
DFS 싸이클 판정 원리가 이해가 힘들다면,
이 또한 알고리즘을 공부해야 하는 이유입니다.

그럼 힘내세요