UNIX 서버에서 RPC를 사용하면 프로그램이 작동을 중지할 수 있다

기술 자료 번역 기술 자료 번역
기술 자료: 811576 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

현상

RPC(원격 프로시저 호출)를 사용하고 있고 Microsoft Windows XP에서 실행되는 클라이언트 프로그램이 UNIX 서버에서 실행되는 RPC 서버와 통신할 경우 프로그램에서 임의로 액세스 위반이 발생할 수 있습니다.

원인

이 문제는 RPC 런타임 DLL(Rpcrt4.dll)의 잘못된 버퍼로 인해 발생합니다. 클라이언트가 40 - 60초 동안 유휴 상태에 있다가 UNIX 서버로 나가는 RPC 호출을 보내고 이 RPC 호출이 대규모 응답을 기대하는 경우에만 버퍼 오버런이 발생합니다. 버퍼가 오버런되면 RPC에서 사용하는 버퍼 다음에 있는 메모리 블록이 손상되고 클라이언트 프로그램에서 임의 액세스 위반이 발생할 수 있습니다.

해결 방법

서비스 팩 정보

이 문제를 해결하려면 Microsoft Windows XP용 최신 서비스 팩을 구하십시오. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
322389 최신 Windows XP 서비스 팩을 구하는 방법

핫픽스 정보

현재 지원되는 핫픽스를 Microsoft에서 구할 수 있지만 이 문서에서 설명하는 문제를 해결하기 위한 것일 뿐이므로 이러한 특정 문제가 발생하는 시스템에만 이 핫픽스를 적용하십시오. 이 핫픽스는 나중에 추가 테스트를 받아야 할 수도 있습니다. 따라서 이 문제의 영향이 심각하지 않으면 이 핫픽스가 포함된 다음 서비스 팩이 나올 때까지 기다리는 것이 좋습니다.

이 문제를 해결하려면 Microsoft 온라인 고객 서비스에 요청을 제출하여 핫픽스를 구하십시오. 핫픽스를 구하기 위한 온라인 요청을 제출하려면 다음 Microsoft 웹 사이트를 방문하십시오.
http://go.microsoft.com/?linkid=6294451
참고 문제가 추가로 발생하거나 문제 해결이 필요한 경우 별도의 서비스 요청을 해야 할 수도 있습니다. 이 특정 핫픽스로 해결할 수 없는 추가 질문과 문제에 대해서는 지원 비용이 청구됩니다. 별도의 서비스 요청을 하려면 다음 Microsoft 웹 사이트를 방문하십시오.
기술지원 서비스 안내
이 수정 프로그램의 영어 버전은 아래와 같거나 그 이상의 파일 특성을 가집니다. 이 파일의 날짜와 시간은 UTC(Coordinated Universal Time)로 나열되며 파일 정보를 볼 때 로컬 시간으로 변환됩니다. UTC와 로컬 시간의 차이를 보려면 제어판날짜 및 시간 도구에서 표준 시간대 탭을 사용하십시오.
표 축소표 확대
날짜시간버전크기파일 이름
2002-12-2309:315.1.2600.1154505,856Rpcrt4.dll

현재 상태

Microsoft는 "본 문서의 정보는 다음의 제품에 적용됩니다." 절에 나열한 제품에서 이 문제를 확인했습니다. 이 문제는 Microsoft Windows XP 서비스 팩 2에서 처음 해결되었습니다.

추가 정보

일부 RPC 서버는 리소스 사용을 줄이기 위해 클라이언트 프로그램에 유휴 연결을 종료하도록 요청할 수 있습니다. 이를 위해 서버는 해당 클라이언트로 시스템 종료 PDU(Protocol Data Unit)를 보냅니다. 클라이언트에서 RPC는 RPC 서버로 나가는 호출을 보낼 때만 자신의 수신 버퍼를 확인합니다. 일부 UNIX 서버는 20초 동안 유휴 상태에 있을 때마다 시스템 종료 PDU를 보냅니다. 클라이언트가 서버에서 두 번 연속으로 시스템 종료 PDU를 보낼 정도로 오랫동안 유휴 상태에 있으면 클라이언트쪽 RPC는 자신의 수신 버퍼에 있는 PDU를 병합합니다. 이때 클라이언트가 나가는 호출을 보내려고 하면 자신의 수신 버퍼에 있는 두 개의 병합 PDU를 먼저 처리하게 됩니다. 처리하는 동안 병합으로 인해 수신 버퍼가 다시 할당되지만 버퍼 크기 정보는 올바르게 추적되지 않습니다. 이로 인해 버퍼가 실제보다 크게 보고될 수 있습니다. 그런 다음 나가는 호출이 이루어집니다. 이때 응답이 재할당된 수신 버퍼의 실제(보고되지 않은) 크기보다 크면 액세스 위반이 발생합니다.

클라이언트가 서버에서 시스템 종료 PDU를 세 번 보낼 정도로 오랫동안 유휴 상태에 있으면 RPC는 해당 연결을 닫습니다. 그런 다음 나가는 호출을 실행하기 위해 새로운 연결이 만들어집니다. 이 경우에는 문제가 발생하지 않습니다. 따라서 클라이언트 프로그램이 40초 이상 60초 미만 동안 유휴 상태에 있을 경우에 문제가 발생하기 쉽습니다. 그러나 이 시간 범위는 UNIX 서버가 얼마만큼 대기한 후 시스템 종료 PDU를 보내는지에 따라 달라집니다.



Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 811576 - 마지막 검토: 2007년 9월 7일 금요일 - 수정: 3.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition
키워드:?
kberrmsg kbbug kbfix kbqfe kbenv kbwinxpsp2fix kbwinxppresp2fix kbhotfixserver KB811576

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com