2012-01-13 88 views
1

有一个用C++编写的COM服务器。一般来说,它可以正常工作,但有时在少数客户中会出现奇怪的问题客户端(GUI应用程序)向服务器发送检索或保存某些业务的请求。如果客户遇到任何问题,他们还会向服务器发送请求以记录错误。在奇怪的情况下,客户端会收到一个COM异常“没有足够的存储空间可用于完成此操作”,将错误消息发送到服务器并自行关闭(它已被编程为在发生此类异常后关闭自身以关闭)。服务器在没有问题的情况下记录消息,但在一段时间没有正常工作之后。它仅响应一些请求(未找到任何模式)。服务器机器和客户机具有足够的内存和CPU能力(问题出现时也是如此)。重新启动服务器可解决所有问题(直到下一次出现通常在几天内发生)。COM服务器的奇怪行为

有人知道我是什么问题吗?

预先感谢您 卢卡斯

+0

你声称服务器有足够的内存,但不知道你是如何知道这是真的。知道服务器是以32位还是64位运行会很有用。在32位内存碎片可能是一个问题。 – morechilli 2012-01-13 15:19:17

回答

2

这是迄今为止的信息太少准确判断问题的原因。当然,线程问题可能会导致这种情况,但有几十个类似的原因可能会有相同的结果。

在幕后,这是HRESULT: 0x8007000E (E_OUTOFMEMORY)。问题是谁产生了这个结果;它是COM互操作还是您的服务器代码?

+0

它不会被服务器代码抛出,所以它必须是COM。 – GUZ 2012-01-13 15:24:57

+0

好吧,例如,可能是一个未终止的字符串,或者长度不正确的数组(例如,在之前的错误中设置为-1)。我们无法从这个问题中得出结论。 – MSalters 2012-01-16 09:16:12