专研精神让人钦佩啊 ...
试过不同NT版本么?推测和PatchGuard有关
推测的重启过程:
A. 内核使用的PDE被改为无效
B. 因为中断或者DDI调用等执行到受影响的内核函数
C. CPU发现PDE无效,准备报Page Fault
D. CPU打算转去执行处理Page Fault的Trap函数,但是因为因为一个PDE最多对应于1024个页表,一个PDE被改为无效后,很多内核的内容都无效了,如果IDT或者Trap函数无效,那么会再次触发Page Fault
E. 以上两步无穷递归,系统便重启了,可能触发Double Fault,但是Double Fault的处理函数也可能无法执行了...
使用硬件调试器可能可以验证以上推测的...
没有调试的时候,来个时钟中断或者切换一下线程就会引发刷新TLB,就引发上面说的过程了;在调试时,调试事件也会导致必须执行内核函数......