【发布时间】:2011-10-30 02:41:48
【问题描述】:
我们得到一个看似随机的 AppCrash,实际上是 windows 接管进程并关闭它,给出一些神秘的调试报告,其中包括 NTDLL.dll、StackHash、User32.dll 等内容。研究报告中的这些模块和信息一年多以来,我们所掌握的信息几乎没有。我们所能做的最好的事情就是将其缩小为我们的应用程序用来与通过 TCP/IP 通信的硬件进行交互的 DLL。我们无法控制这个外部库,必须使用它,并且考虑到问题是随机的(我们无法复制,在 PC 重启时自行解决),我们似乎被它困住了。
问题是我们的应用程序需要在不受人类监控的仪器上 24/7 全天候运行。我需要检测我们的应用程序何时崩溃,并向整个事物发出重启命令。问题是检测到 AppCrash;应用程序内部不会产生异常(AppCrash 在应用程序外部),并且没有多少日志记录会产生任何程序正在关闭的指示。
我们想要做的是运行一个服务来检查应用程序是否正在运行,如果没有,它会发出重新启动命令来重新启动系统。但是,当 AppCrash 对话框显示时,它会让进程继续运行。
有没有办法阻止这些 AppCrash 通知、绕过它们或将它们设置为至少先关闭程序?请不要指向 stackhash.com 或使用 MS 错误报告;这些设备不支持互联网。我们也无法修复我们正在使用的 DLL 中的任何错误(OEM 供应商不合作)。
【问题讨论】:
-
是您的应用程序崩溃了,还是您依赖的另一个应用程序或您的应用程序正在与之交互?
-
我的应用程序崩溃了,但它是由 pinvoked DLL 中发生的非常糟糕的事情引起的,可能是访问冲突或操作系统无法恢复的事情。
-
只要关掉 WER,如果没有人,就没有必要显示对话框。向超级用户询问