인프런 커뮤니티 질문&답변

허정준님의 프로필 이미지
허정준

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Server Service

작업 환경에 따라 에러가 있고 없고 합니다.. 이틀째 해결이 안되요 ㅜㅜ

작성

·

691

0

GameServer 프로젝트

void Listener::RegisterAccept(AcceptEvent* acceptEvent)

{

SessionRef session = _service->CreateSession(); // Register IOCP

 

acceptEvent->Init();

acceptEvent->session = session;

 

DWORD bytesReceived = 0;

if (false == SocketUtils::AcceptEx(_socket, session->GetSocket(), session->_recvBuffer, 0, sizeof(SOCKADDR_IN) + 16, sizeof(SOCKADDR_IN) + 16, OUT & bytesReceived, static_cast<LPOVERLAPPED>(acceptEvent)))

{

const int32 errorCode = ::WSAGetLastError();

if (errorCode != WSA_IO_PENDING)

{

// 일단 다시 Accept 걸어준다

RegisterAccept(acceptEvent);

}

}

}

 

위 코드는 수업 자료를 받아서 전부 빌드 후에 디버그 실행을 할 경우 

 

0x00007FF7DD492613에(GameServer.exe의) 처리되지 않은 예외가 있습니다. 0xC000001D: Illegal Instruction.

 

위와 같은 컴파일 에러 창이

 

    template <class _Ty2 = _Ty, enable_if_t<!is_array_v<_Ty2>, int> = 0>

    _NODISCARD _Ty2* operator->() const noexcept {

        return get();

    }

 

memory 파일 안  get() 부분에 나타 납니다.

 

알아본 결과 session->GetSocket() 함수에서 발생하는데요

shared_ptr 의 화살표 operator 에서 에러가 발생합니다.

환경에 따라 에러가 있고 없고의 차이는 회사와 집입니다..

집에서 Debug x64 로 하면 에러가 나는데 Debug x86 으로 하면 에러가 안납니다..

이런 글을 올려도 되는지 모르겠지만 이틀째 답답해서 죽을 맛이에요. 이런 현상을 겪어 보신적 있으신가요?? 해결 방안은 어떻게 되는지 알고 싶습니다...

답변 4

0

저도 똑같은 에러가 발생하였는데요.

저같은경우는

shared_ptr를 nullptr로 밀어버린다음에 접근하였더니

    template <class Ty2 = Ty, enable_if_t<!is_array_v<_Ty2>, int> = 0>

    NODISCARD Ty2* operator->() const noexcept {

        return get();

    }

에러가 발생하였습니다.

그래서 shared_ptr의 값을 날리지 않고(?) 접근하였더니 에러가 발생하지 않았습니다.

0

허정준님 혹시 해결 되셨나요? 저도 계속 같은곳에서 에러가 발생하고 있어서 방법을 찾는 중인데 도저히 안나와서 답답한 상황입니다;;

0

허정준님의 프로필 이미지
허정준
질문자

windows 버전에서도 차이가 날까요? 

에러가 나지 않는 컴에선 windows Pro에 cpu i7-11700k 사용중이고, 

에러 나는 컴에선 windows home 에 cpu i9-12900k 사용중입니다.

Rookiss님의 프로필 이미지
Rookiss
지식공유자

windows 버전 차이는 아닐 것 같구요.
visual studio를 지우고 다시 설치해보는 것도 방법입니다.
부두술 미신이 아니라 그렇게 해서 해결된 적이 은근 많습니다.
(이런 저런 버전들이 꼬여서 설치 되었다거나..)

허정준님의 프로필 이미지
허정준
질문자

넵 퇴근하고 가서 한번 해볼게요 !

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

windows 운영체제 + visual studio 조합이 맞을까요?
사실 환경 문제는 제 환경에선 발생 안 할 가능성이 99%라 저도 딱히 원인을 파악하기가 힘듭니다.
가능하면 다른 컴퓨터에서도 테스트를 해보시기 바랍니다.

허정준님의 프로필 이미지
허정준

작성한 질문수

질문하기