怪问题,在任务中放一个
xorl %ebx,%ebx
divl %ebx
在异常处理中同样放一个居然不发生双重故障!!!???
幸好有网络,在intel的站点上找到答案:
"Problem: In some cases a double fault exception is not generated when it
should have been because the internal double fault counter does not correctly
get incremented...
"Implication: The processor could incorrectly service a second contributory
fault instead of going to the double fault handler. The resulting system
behavior will be operating system dependant. Additionally, an inconsistent
EIP may be pushed on the stack.
"Robust operating systems should be immune to this erratum because their
exception handlers are designed such that they do not generate additional
contributory exceptions. This erratum is only of concern during the
operating system development and debug.
"Workaround: Use contributory exception handlers that do not generate
additional contributory exceptions...
"Status: No fix."