ptrace single-stepping change breaks Wine

Jesse Allen the3dfxdude at gmail.com
Wed Dec 29 15:43:00 CST 2004


On Wed, 29 Dec 2004 12:04:57 -0800 (PST), Linus Torvalds
<torvalds at osdl.org> wrote:
> On Wed, 29 Dec 2004, Jesse Allen wrote:
> > > So does removing the conditional TF clear make everything work again?
> > >
> >
> > Yes, as long as TIF_SINGLESTEP is not set in set_singlestep().
> 
> That may be a clue, if only because that makes absolutely _zero_ sense.
> 
> Setting TIF_SINGLESTEP shouldn't actually matter in this case, since we
> set the TRAP_FLAG in eflags by hand anyway (and that's what TIF_SINGESTEP
> will just re-do when returning to user space).
> 
> What TIF_SINGLESTEP _does_ do, however, is change how some other issues
> are reported to user space. In particular, it causes system call tracing
> (see arch/i386/kernel/ptrace.c: do_syscall_trace), and maybe it is _that_
> that messes up Wine.
> 
> So instead of removing the setting of TIF_SINGLESTEP in set_singlestep(),
> can you test whether removing the _testing_ of it in do_syscall_trace()
> makes things happier for you? Hmm?
> 

Yes, doing that does work.  But I still have to remove the conditional
TF clear.  Here's the diff now to show you.

Jesse
-------------- next part --------------
A non-text attachment was scrubbed...
Name: reverse_thread_flag_test.diff
Type: text/x-diff
Size: 930 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-devel/attachments/20041229/8ed2a47b/reverse_thread_flag_test.bin


More information about the wine-devel mailing list