작업 환경에 따라 에러가 있고 없고 합니다.. 이틀째 해결이 안되요 ㅜㅜ
904
投稿した質問数 1
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
windows 버전에서도 차이가 날까요?
에러가 나지 않는 컴에선 windows Pro에 cpu i7-11700k 사용중이고,
에러 나는 컴에선 windows home 에 cpu i9-12900k 사용중입니다.
0
windows 버전 차이는 아닐 것 같구요.
visual studio를 지우고 다시 설치해보는 것도 방법입니다.
부두술 미신이 아니라 그렇게 해서 해결된 적이 은근 많습니다.
(이런 저런 버전들이 꼬여서 설치 되었다거나..)
0
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

