2008-09-05 40 views
1

我们有一个使用MS RPC构建的相当标准的客户端/服务器应用程序。客户端和服务器都是用C++实现的。客户端建立到服务器的会话,然后在最后关闭会话之前在一段时间内重复调用它。RPC异常的含义/原因'没有接口已导出。'

然而,定期,特别是在重负载条件下,我们看到一个RPC例外显示代码1754:RPC_S_NOTHING_TO_EXPORT

看来,这发生在一个会话的中间。用户登录了一段时间,拨打了成功的电话,然后其中一个电话莫名其妙地返回了这个错误。据我们所知,服务器没有收到任何迹象表明任何事情都出错了 - 它绝对不会看到客户所做的电话。

错误代码似乎也具有永久性含义。让客户端重试连接也不起作用。但是,如果用户在同一客户端和服务器之间同时有多个用户会话处于活动状态,则其他连接不受影响。

从本质上说,我有两个问题:

  1. 有谁知道什么RPC_S_NOTHING_TO_EXPORT手段? MSDN文档简单地说:"No interfaces have been exported." ......咦?该会议正常工作的许多相同的调用实例,直到这一点...

  2. 有没有人有任何想法如何确定真正的问题? 注意:如果可能的话,捕获网络流量是我们宁愿避免的,因为问题是偶发性的,我们可能会在发生事件之前经历数千兆字节的流量。

回答

1

捕获网络流量将是解决此问题的最佳方法之一。如果你不能这样做,你可以转储客户端进程并使用WinDBG或Visual Studio进行调试吗?也许比较运行正常时与转储错误状态下的转储?

相关问题