Friday, April 27, 2007

0x00000000


第一次自己写的程序遇到这个问题,程序运行中弹出窗口,内容如下:

The instruction at "0x00000000" referenced memory at "0x00000000". The memory could not be "read".

请注意The instruction at "0x00000000",经常遇到的情况应该是The instruction不在"0x00000000"的位置。而且点击cancel后,进入不了JIT debugger,无从debug。

我的第一反应是线程的问题,于是查找程序中与线程相关的代码,最后发现程序中使用了Process,在Process的OnExited事件的回调函数中,关闭当前的Process,从一个列表中取出下一个command,启动下一个Process。如此反复,直到列表为空。随机的,当启动一个新的Process时,偶尔会发生如上所述bug。

我没有想出何原因会导致这个问题,不过我有解决方案如下,先遍历列表中所有command,生成一个batch文件,然后启动一个Process,运行该batch文件。问题解决!!!

至于上述问题发生的原因,思考中……