스트레스 테스트 클라이언트를 만들고 있습니다.
20개의 쓰레드 까지는 아무런 이상 없이 잘 돌아가던 녀석이
30개 이상으로 끌어올리면 (10, 20, 30 단위로 설정할 수 있습니다.)
memmove 에서 꼭 애러가 납니다.
memmove는 메인 스레드에서 CriticalSection을 걸어 사용하고 있는데도
꼭 이부분에서 애러가 나는군요. ㅜㅜ
Code: Select all
--- .\Intel\MEMCPY.ASM -----------------------------------------------------------------------------------------------
memmove:
10218C10 push ebp
10218C11 mov ebp,esp
10218C13 push edi
10218C14 push esi
10218C15 mov esi,dword ptr [src]
10218C18 mov ecx,dword ptr [count]
10218C1B mov edi,dword ptr [dst]
10218C1E mov eax,ecx
10218C20 mov edx,ecx
10218C22 add eax,esi
10218C24 cmp edi,esi
10218C26 jbe CopyUp (10218c30)
10218C28 cmp edi,eax
10218C2A jb CopyDown (10218da8)
CopyUp:
10218C30 test edi,3
10218C36 jne CopyLeadUp (10218c4c)
10218C38 shr ecx,2
10218C3B and edx,3
10218C3E cmp ecx,8
10218C41 jb CopyUnwindUp (10218c6c)
[b]10218C43 rep movs dword ptr [edi],dword ptr [esi][/b]
10218C45 jmp dword ptr [edx*4+10218D58h]
CopyLeadUp:
10218C4C mov eax,edi
10218C4E mov edx,3
10218C53 sub ecx,4
볼드체로 써놓은 곳에서 애러가 납니다. ㅠ.ㅠa
memmove 함수가 쓰레드에 안전하지 않은 함수라서 이런 오류가 발생하는 것이라면
대체 함수가 있겠죠? ㅠ.ㅠa
우욹. 도무지 애러의 이유를 모르겠네요.
가르침 부탁드립니다.