none
Windows 7 用户线程挂起 RRS feed

  • 问题

  • 1 环境

    Windows 7 SP 1 Professional 英文 32位 

    2 现象

    我们自己开发的用户程序的一个线程(C++开发)通过API函数访问PCIe卡上的数据时(PCIe卡的驱动为第三方公司开发),调用间隔为10~12ms,会不定时出现该线程被windows挂起的情况(Heart Beat每秒加1),几秒之后,又自动恢复,记录下来被挂起的最大时间长达5800ms。

    3 检查

    3.1 在Window的系统Log和用户程序Log中,都没有发现关于这部分问题的出错信息。

    3.2 在PCIe卡的驱动里增加每次调用的记录,被调用的时间,内部执行的时间以及返回是否成功,数据都正常。

    3.3 在用户程序中增加监视,一旦发现超过100ms未收到返回数据,就crash用户程序,获取dump文件。对dump分析后发现,线程挂起时,程序确实停在访问PCIe卡的时候。

    4 问题

    4.1 现在看到3.2和3.3有矛盾的地方。请问专家,如何进一步分析?

    4.2 除了用户程序和PCIe卡的驱动,是否需要检测Windows系统运行状态,如何监控?


    2018年2月24日 4:00