inflearn logo
강의

講義

知識共有

C++とアンリアルで制作するMMORPGゲーム開発シリーズ Part4:ゲームサーバー

サーバーサービス

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

904

ehwja24937

投稿した質問数 1

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 으로 하면 에러가 안납니다..

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

network MMORPG windows-server

回答 4

0

kangjaegoo167512

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

저같은경우는

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

ehdtn16

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

0

ehwja24937

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

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

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

0

Rookiss

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

0

ehwja24937

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

0

Rookiss

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

Memory Pool에서 오버플로우 질문입니다.

0

61

2

포토폴리오 및 진로 관련하여 고민입니다.

0

107

1

포토폴리오 관련 고민입니다.

0

58

1

실무에서도 alloc, 스마트포인터 등을 구현해서 쓰는지 궁금합니다.

0

79

2

성능 테스트 결과

0

100

2

게임 서버 Stateful, Stateless 진로 고민

0

117

1

WaitOnAddress와 Sleep의 차이 질문

0

80

1

궁금한거 있습니다.

0

79

2

JobTimer 구동 스레드

0

105

2

TryPop() 동작 관련 질문

0

79

1

로드맵 C#서버 C++서버 방향성 질문

0

144

2

스레드 id를 출력할떄 메인스레드 id도 출력되나요?

0

71

1

생명주기를 위한 의도적 복사

0

83

2

락프리의 실무에서 사용 질문

0

137

2

32bit threadID와 16비트 상위 WriteFlag에 대해

0

99

2

mutex와 sleep 차이점

0

115

1

실무에서는 어떠한 코드 스타일을 사용하는지 궁금합니다

0

150

2

Stomp Allocator의 Release함수에 대한 질문입니다.

0

93

1

공부법 관련해서

0

181

2

MakeShared 함수 관련

0

112

1

지금까지 서버코어에서 만든 내용에 대해 궁금한 점이 있어서 질문 드립니다.

0

141

2

운영체제관련 질문입니다

0

128

1

send하려는 데이터 크기가 크면 memcpy에서 문제가 발생할 것 같습니다.

0

115

2

메모리 풀 질문있습니다.

0

121

1