2

我需要一些“光”来获得解决方案。可能有很多事情会导致这个问题,但也许有人可以帮助我。

场景:24/7 运行 PostgreSQL 数据库和其他服务器应用程序(用于处理数据库上的任务等)的 Windows 服务器。有不同的服务器方案 (~30),具有不同的硬件和 Windows 版本(XP SP3/WinServer 等......全部基于 NT)。所有应用程序都是用 Delphi7 编写的,并链接到 DLL(也在 D7 中)。

几天后(有时是一周,有时是几个月),Windows 开始出现奇怪的行为,例如无法打开开始菜单,对话框中缺少一些按钮。很快一些应用程序无法打开,在 eventviewer 上引发了一个事件:

Faulting application x, version y, faulting module kernel32.dll, version 5.1.2600.5781, fault address 0x00012afb

同时,其他应用程序可以正常打开,例如记事本、iexplore 等……但我的一些应用程序没有,只有上面描述的事件日志。但是如果我们不重新启动系统,几天后甚至 cmd.exe 都会停止打开,(和所有其他应用程序)在事件日志上会出现同样的错误。

我试图找到“什么”会导致这种情况,但没有成功。所以,任何建议都将受到欢迎。

提前致谢。

4

1 回答 1

4

我认为您的资源句柄(窗口句柄)用完了。您可以通过查看Sysinternals Process Explorer(更好的任务管理器)中的系统属性来验证这一点。我认为即使是默认的任务管理器也可以帮助显示句柄计数。然后,您可以确定是哪个应用程序导致了问题。

一旦您知道应用程序泄漏并且如果它是您的,您可以使用 Rational purify 或 Boundschecker 来深入研究问题。如果您没有钱购买这些工具,您将不得不手动减少问题,例如通过停用某些功能并查看句柄计数是否仍然增加......

不确定这是否是您遇到的问题,可能完全不相关。但是很容易检查。跟踪是当您遇到其他应用程序问题时,某些应用程序正在窃取一些全球资源。像记事本这样的应用程序不使用太多资源,因此看起来工作正常,重型应用程序更有可能出现问题。

希望能帮助到你。

于 2010-06-14T19:50:40.297 回答