ptrace single-stepping change breaks Wine

Daniel Jacobowitz dan at debian.org
Fri Nov 19 15:23:28 CST 2004


On Fri, Nov 19, 2004 at 09:41:44PM +0100, Eric Pouech wrote:
> >Btw, does wine ever _use_ PTRACE_SINGLESTEP for any of the things it does?
> >
> >If it does, then that woulc certainly explain why my "fix" made no 
> >difference: my fix _only_ handles the case where the ptracer never 
> >actually asks for single-stepping, and single-stepping was started 
> >entirely by the program being run (ie by setting TF in eflags from within 
> >the program itself).
> >
> >But if wine ends up using PTRACE_SINGESTEP because wine actually wants to 
> >single-step over some instructions, then the kernel will set the PT_DTRACE 
> >bit, and start tracing through signal handlers too. The way Wine doesn't 
> >want..
> 
> wine mixes both approches, we have (to control what's generated inside the 
> various exception) to ptrace from our NT-kernel-like process (the ptracer) 
> to get the context of the exception. Restart from the ptracer is done with 
> PTRACE_SINGLESTEP.

I'm getting the feeling that the question of whether to step into
signal handlers is orthogonal to single-stepping; maybe it should be a
separate ptrace operation.

Platforms which don't implement PTRACE_SINGLESTEP would probably
appreciate this.  A "single step" which stops you after setting up the
signal trampoline and adjusting the PC, before executing any
instructions in the handler.

-- 
Daniel Jacobowitz



More information about the wine-devel mailing list