ptrace single-stepping change breaks Wine

Linus Torvalds torvalds at osdl.org
Thu Dec 30 17:17:01 CST 2004


On Thu, 30 Dec 2004, Daniel Jacobowitz wrote:
> 
> does not look right to me.  Before, we'd get an 0x80|SIGTRAP result
> from wait.  Now, you've moved the 0x80 to live only inside the siginfo.
> This is accessible to the debugger via ptrace, but only very recently
> (late 2.5.x).  So this will probably break users of PT_TRACESYSGOOD.

I don't see how to easily emulate the old behaviour 100% - see
ptrace_notify. We always sent the signal SIGTRAP to the process, and then
set "exit_code" tp have the 0x80 marker by calling ptrace_stop() by hand.
However, if we make it a real signal (which we need to do to get the 
continue semantics right), we no longer have that out-of-band info 
available to us.

We could make "get_signal_to_deliver()" pass in some other exit_code to 
ptrace_stop() than just signr. It would have to pick it up from the 
siginfo structure, but then we'd have to make sure that _other_ signal 
users do that properly..

Patches/suggestions welcome.

		Linus



More information about the wine-devel mailing list