我有一个客户是谁告诉我,我的程序(简单的用户土地方案,而不是一个驱动程序)崩溃他的系统有蓝屏死亡(BSOD).他说他从未在其他程序中遇到过这种情况,而且他可以轻松地用我的程序重现它.
BSOD的类型为CRITICAL_OBJECT_TERMINATION(0x000000F4
),对象类型0x3
(进程):对系统操作至关重要的进程或线程意外退出或终止.
一个简单的程序可以负责BSOD(即使在Vista上......)还是应该检查硬件或操作系统安装?
Jon*_*eet 10
仅仅因为你的程序不是驱动程序并不意味着它不会使用驱动程序.
理论上,您的代码不应该能够BSOD计算机.操作系统要确保不会发生这种情况.根据定义,这意味着在硬件或代码以外的代码中存在问题.但这并不排除代码中存在错误.
使用用户空间程序导致BSOD的最简单方法是(afaik)杀死Windows子系统进程(csrss.exe).这不需要有缺陷的硬件,也不需要内核或驱动程序中的错误,它只需要管理员权限1.
你的代码到底在做什么?错误消息("对系统操作至关重要的进程或线程意外退出或终止.")听起来像是一个必要的系统进程终止.也许你正在杀死一个进程并无意中得到了错误的进程?
如果可能的话,你可以尝试从该客户那里获得内存转储.使用Windows调试工具的描述,你可以再进一步分析倾倒在这里.
1 Windows不会阻止您这样做,因为它"让管理员控制他们的计算机".所以这是设计而不是错误.阅读雷蒙德的文章,你会明白为什么.
归档时间: |
|
查看次数: |
1823 次 |
最近记录: |