程序在使用 RPC 与 UNIX 服务器进行通信时可能停止运行

文章翻译 文章翻译
文章编号: 811576 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

症状

当使用远程过程调用 (RPC) 并在 Microsoft Windows XP 上运行的客户端程序与 UNIX 服务器上运行的 RPC 服务器通信时,可能会随机地遇到访问冲突。

原因

此问题是由于 RPC 运行时 DLL (Rpcrt4.dll) 中存在不正确的缓冲区而引起的。仅在客户端已空闲 40 到 60 秒钟之后向 UNIX 服务器发出传出的 RPC 调用并且该 RPC 调用需要大规模响应时,才会发生缓冲区溢出现象。溢出的缓冲区会损坏跟在 RPC 所使用的缓冲区后面的内存块,并可能在客户端程序中导致随机的访问冲突。

解决方案

Service Pack 信息

要解决此问题,请获取最新的 Microsoft Windows XP Service Pack。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322389 如何获取最新的 Windows XP Service Pack

修补程序信息

Microsoft 目前提供了一个受支持的修补程序。但是,此修补程序仅用于修复本文所述的问题。请仅将此修补程序应用于出现这一特定问题的系统。此修补程序可能还会接受进一步的测试。因此,如果这个问题没有给您造成严重的影响,我们建议您等待包含此修补程序的下一个 Service Pack。

要解决此问题,请向 Microsoft 在线客户服务提交请求以获取该修补程序。要提交联机请求以获取该修补程序,请访问下面的 Microsoft 网站:
http://go.microsoft.com/?linkid=6294451
注意:如果发生其他问题或需要进行任何疑难解答,则您可能需要创建单独的服务请求。对于此特定修补程序无法解决的其他支持问题和事项,将照常收取支持费用。要创建单独的服务请求,请访问下面的 Microsoft 网站:
http://support.microsoft.com/contactus/?ws=support
此修补程序的英文版具有下表中列出的文件属性(或更新的属性)。这些文件的日期和时间按协调世界时 (UTC) 列出。当您查看文件信息时,相应的时间将转换为本地时间。要了解 UTC 与本地时间之间的时差,请使用“控制面板”中“日期和时间”工具中的“时区”选项卡。
日期         时间   版本           大小     文件名
------------------------------------------------------
23-Dec-2002  09:31  5.1.2600.1154  505,856  Rpcrt4.dll

状态

Microsoft 已经确认这是在“这篇文章的信息适用于:”部分中列出的 Microsoft 产品中存在的问题。 此问题最早在 Microsoft Windows XP Service Pack 2 中得到了解决。

更多信息

某些 RPC 服务器可能要求客户端程序结束其空闲连接以降低资源使用率。这是通过向客户端发送关闭协议数据单元 (PDU) 来完成的。在客户端上,RPC 仅在向 RPC 服务器发出传出调用时才检查它的接收缓冲区。有些 UNIX 服务器每经过 20 秒的空闲时间就会发送一次关闭 PDU。如果客户端的空闲时间过长,以致服务器连续发送了 2 次关闭 PDU,则客户端上的 RPC 会将这些 PDU 合并到它的接收缓冲区中。如果客户端此时决定发出传出调用,它将先尝试处理其接收缓冲区中合并的两个 PDU。在处理期间,合并处理会导致接收缓冲区被重新分配。但是,没有正确跟踪缓冲区大小信息。这可能导致所报告的缓冲区比其实际大小要大。然后,将发出传出调用。如果响应的大小大于重新分配的接收缓冲区的实际(而不是报告的)大小,就会发生访问冲突。

如果客户端空闲时间过长,以致服务器发送了三次关闭 PDU,RPC 将关闭该连接。然后,将创建一个新的连接以运行传出调用。这种情况下,不会出现此问题。因此,当客户端程序的空闲时间在 40 到 60 秒钟之间时,可能会出现此问题。不过,这取决于 UNIX 服务器在发送关闭 PDU 之前等待的时间。

属性

文章编号: 811576 - 最后修改: 2007年9月7日 - 修订: 3.0
这篇文章中的信息适用于:
  • Microsoft Windows XP Professional Edition
  • Microsoft Windows XP Home Edition
关键字:?
kberrmsg kbbug kbfix kbqfe kbenv kbwinxpsp2fix kbwinxppresp2fix kbhotfixserver KB811576
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

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