Messages in this thread | | | Date | Thu, 16 Feb 2006 05:58:15 -0500 | From | Chuck Ebbert <> | Subject | i386 singlestep is borken |
| |
Playing around with singlestep on i386, I found this:
1. User sets TF and starts to singlestep through code, handling SIGTRAPS as they occur.
2. Makes vsyscall; debug trap occurs in kernel mode and TF is cleared. TIF_SINGLESTEP gets set so kernel will remember to re-enable TF on return to user. But when user eflags is saved on the stack, TF has already been cleared.
3. When user gets control back, TF is not re-enabled.
4. Even after user clears TF, TIF_SINGLESTEP remains set for that thread.
None of this happens when using int80 because the flag is cleared and re-enabled by the interrupt handler. TIF_SINGLESTEP never gets set and doesn't need to be.
-- Chuck "Equations are the Devil's sentences." --Stephen Colbert
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |