什么是“未知软件异常(0xc00000fd)”错误以及如何避免它?

时间:2011-10-14 06:42:42

标签: windows winapi exception

我创建了一个名为code_2的AHK脚本,对其进行编译并将其放入我的Startup文件夹中,以便每次打开计算机时它都会自动开始运行。

该脚本会检查网站是否有新的更新,每当检测到网站上的更新时,它都会使用UrlDownloadToFile下载这些更新。

起初脚本似乎工作正常,但最近我的脚本运行了大约15分钟后,我开始从我的计算机上收到以下消息:

  

C:\ Documents and Settings \ Administrator \“开始”功能表\程序集\启动\ code_2.exe:   code_2.exe - 应用程序错误

     

应用程式发生例外未知软件异常(0xc00000fd)于位置0x7c92eddc。

     

请按[确定]终止程式

     

请按[取消]进行程式侦错

知道这条消息是什么意思吗? (对不起这里的中文,但我认为如果你用它的号码知道这个消息,你应该熟悉这些内容。)

无论如何,这是翻译的消息:

  

C:\ Documents and Settings \ Administrator \ Start Menu \ Programs \ Startup \ code_2.exe:code_2.exe - Application Error

     

应用程序位置0x7c92eddc发生异常未知软件异常(0xc00000fd)。

     

单击“确定”终止程序
  单击CANCEL以调试程序

1 个答案:

答案 0 :(得分:16)

我相信0xc00000fd是一个堆栈溢出异常(http://support.microsoft.com/kb/315937)。没有看到你的脚本,很难确定出现了什么问题,但这种事情通常是由于递归太深造成的。我会检查你的脚本是否有任何递归函数,并确保它们在达到太深的深度之前就已经退出了。

你可能实际上在堆栈上分配了太多。我不熟悉AHK,但编译器也可能在堆栈上分配大量数据(可能是局部变量)。如果定义了大量(或许多大的)局部变量,可能会发生这种情况。

堆栈/内存也可能以某种方式被破坏,尽管在使用脚本语言时似乎不太可能出现这种情况。从脚本语言访问本机API时可能更有可能,具体取决于如何完成。

我将在这里建议的最后一个可能性是你正在调用一些API并导致它分配大量的堆栈空间,可能是通过传入错误的参数。同样,在不知道更多细节的情况下(尤其是当它遇到异常时它正在做什么),很难肯定地说。

我可以想到其他一些原因,但它们的可能性更小。