ptrace single-stepping change breaks Wine
torvalds at osdl.org
Sun Nov 21 19:07:13 CST 2004
On Mon, 22 Nov 2004, Andreas Schwab wrote:
> Linus Torvalds <torvalds at osdl.org> writes:
> > Now, try to "strace" it, or debug it with gdb, and see if you can repeat
> > the behaviour.
> You'll always have hard time repeating that under strace or gdb, since a
> debugger uses SIGTRAP for it's own purpose and does not pass it to the
Sure. But "hard time" and "impossible" are two different things.
It _should_ be perfectly easy to debug this, by using
instead of "continue" when you get a SIGTRAP that wasn't due to anything
But try it. It doesn't work. Why? Because the kernel will have cleared TF
on the signal stack, so even when you do a "signal SIGTRAP", it will only
run the trap handler _once_, even though it should run it three times
(once for each instruction in between the "popfl"s.
I do think this is actually a bug, although whether it's the bug that
causes problems for Wine is not clear at all. I'mm too lazy to build
and boot an older kernel, but I bet that on an older kernel you _can_ do
"signal SIGTRAP" three times, and it will work correctly. That would
indeed make this a regression.
More information about the wine-devel