Подумалось тут. Команда sysenter не запрещает прерывания <edit: вообще не трогает флаги, кроме VM>, а windows-овский хандлер ее запрещает прерывания не сразу. Вопрос: пусть имеется следующая последовательность действий: 1) App1 вызывает sysenter 2) До сброса IF приходит прерывание и происходит переключение контекста на App2 3) App2 тоже вызывает sysenter 4) Так как команда sysenter берет значение ESP из MSR, который всегда одинаковый на каждом процессоре <edit:независимо от потока> (проверял), то App2 затрет стек App1, в результате чего App1 успешно грохнется. 5) Этого не происходит. Почему? NB. Похожая вещь происходит, если попытаться потрейсить точку входа sysenter-а. В случае, если в нашем хандлере int1 разрешаются прерывания, рано или поздно стек портится. <edit: использованный мной хандлер int1 далеко не уходит, т.к. не восстанавливает TF>