From: Michael Stefaniuc <mstefani@redhat.com>
To: prasad@linux.vnet.ibm.com
Cc: Frederic Weisbecker <fweisbec@gmail.com>,
Alan Stern <stern@rowland.harvard.edu>,
linux-kernel@vger.kernel.org,
Maneesh Soni <maneesh@linux.vnet.ibm.com>,
Alexandre Julliard <julliard@winehq.org>,
"Rafael J. Wysocki" <rjw@sisk.pl>,
Maciej Rutecki <maciej.rutecki@gmail.com>
Subject: Re: Regression in ptrace (Wine) starting with 2.6.33-rc1
Date: Sat, 13 Feb 2010 22:29:16 +0100 [thread overview]
Message-ID: <4B7719AC.6040901@redhat.com> (raw)
In-Reply-To: <20100213173323.GB3778@in.ibm.com>
On 02/13/2010 06:33 PM, K.Prasad wrote:
> On Thu, Feb 11, 2010 at 08:49:48PM +0100, Michael Stefaniuc wrote:
>> On 02/11/2010 07:22 PM, Frederic Weisbecker wrote:
>>> On Thu, Feb 11, 2010 at 05:33:13PM +0100, Michael Stefaniuc wrote:
>>>> 2.6.33-rc1 broke ptrace for Wine, specifically the setting of the debug
>>>> registers. This is visible in the Wine ntdll exception tests failing on
>>>> 2.6.33-rcX while they work just fine in 2.6.32.
>>>>
>>>> A regression test resulted in:
>>>> 72f674d203cd230426437cdcf7dd6f681dad8b0d is the first bad commit
>>>> commit 72f674d203cd230426437cdcf7dd6f681dad8b0d
>>>> Author: K.Prasad<prasad@linux.vnet.ibm.com>
>>>> Date: Mon Jun 1 23:45:48 2009 +0530
>>>>
>>>> hw-breakpoints: modify Ptrace routines to access breakpoint registers
>>>>
>>
>>> Thanks a lot for your report. Is there an easy way to reproduce
>>> this?
>> Yes, the bug is 100% reproducible. Even the "stack overflow" bytes are
>> always constant on my two boxes: 932 bytes on my Atom and 1588 bytes on
>> my Q9450 with a x86_64 kernel.
>>
>> Either grab wine-1.1.38 from
>> http://sourceforge.net/projects/wine/files/Source/ or from git
>> git clone git://source.winehq.org/git/wine.git
>> configure
>> make
>> cd dlls/ntdll/tests/
>> make exception.ok
>>
>
> Can you be more specific with details - such as what was the desired
> action/return value of ptrace that your testcase wanted but did not
> happen (after the patch applied)? What is the other regression that
> you found as a result of another patch in the hw-breakpoint patch
> series?
>
> I am able to see a user-space stackdump upon a 'make exception.ok',
> which isn't easy enough (atleast for me) to narrow down to the purported
> ptrace defect.
Here is a discussion I had with the Wine maintainer on what that
specific test does exactly:
<julliard> puk: the test changes the debug regs in the context, which
makes the server use ptrace to change the debug regs in the test process
<puk> cool
<puk> so i basically just do an strace on the server
<julliard> then it does a GetContext to verify that they have been set
correctly
<julliard> yes all the ptrace calls are in the server
<puk> and capture what ptrace returns
<puk> let me guess GetContext uses ptrace too?
<julliard> yes
<julliard> if it even gets to that point, it sounded like it was
crashing inside the exception handler
The wineserver is basically the "kernel space" in Wine.
Test setup:
-----------
# Start the wineserver and and attach to it
wineserver
strace -p $wineserver_pid >& strace.out
# Run the test
cd dlls/ntdll/tests/
make exception.ok
Results 2.6.33-rcX:
-------------------
ptrace(PTRACE_ATTACH, 18036, 0, 0) = 0
ptrace(PTRACE_POKEUSER, 18036, offsetof(struct user, u_debugreg),
0x42424242) = 0
ptrace(PTRACE_POKEUSER, 18036, offsetof(struct user, u_debugreg) + 4, 0) = 0
ptrace(PTRACE_POKEUSER, 18036, offsetof(struct user, u_debugreg) + 8, 0) = 0
ptrace(PTRACE_POKEUSER, 18036, offsetof(struct user, u_debugreg) + 12,
0) = 0
ptrace(PTRACE_POKEUSER, 18036, offsetof(struct user, u_debugreg) + 24,
0) = 0
ptrace(PTRACE_POKEUSER, 18036, offsetof(struct user, u_debugreg) + 28,
0x155) = -1 EINVAL (Invalid argument)
Results 2.6.32:
---------------
trace(PTRACE_ATTACH, 3077, 0, 0) = 0
ptrace(PTRACE_POKEUSER, 3077, offsetof(struct user, u_debugreg),
0x42424242) = 0
ptrace(PTRACE_POKEUSER, 3077, offsetof(struct user, u_debugreg) + 4, 0) = 0
ptrace(PTRACE_POKEUSER, 3077, offsetof(struct user, u_debugreg) + 8, 0) = 0
ptrace(PTRACE_POKEUSER, 3077, offsetof(struct user, u_debugreg) + 12, 0) = 0
ptrace(PTRACE_POKEUSER, 3077, offsetof(struct user, u_debugreg) + 24, 0) = 0
ptrace(PTRACE_POKEUSER, 3077, offsetof(struct user, u_debugreg) + 28,
0x155) = 0
So it looks like something in the setting of DR7 is broken or at least
changed behavior. The function in Wine that does those calls is
set_thread_context() from server/ptrace.c .
I'll try to see if I can reproduce the other regression; as it is hidden
at the moment by this regression.
Thanks for looking at the problem.
bye
michael
next prev parent reply other threads:[~2010-02-13 21:30 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-11 16:33 Regression in ptrace (Wine) starting with 2.6.33-rc1 Michael Stefaniuc
2010-02-11 18:22 ` Frederic Weisbecker
2010-02-11 19:49 ` Michael Stefaniuc
2010-02-12 18:15 ` Frederic Weisbecker
2010-02-13 17:33 ` K.Prasad
2010-02-13 21:29 ` Michael Stefaniuc [this message]
2010-02-14 17:15 ` Frederic Weisbecker
2010-02-14 20:13 ` Michael Stefaniuc
2010-02-14 20:41 ` Frederic Weisbecker
2010-02-14 23:05 ` Michael Stefaniuc
2010-02-15 11:57 ` K.Prasad
2010-02-15 15:57 ` Alexandre Julliard
2010-02-15 19:37 ` Michael Stefaniuc
2010-02-15 19:47 ` Roland McGrath
2010-02-17 16:03 ` Frederic Weisbecker
2010-02-17 17:06 ` Frederic Weisbecker
2010-02-18 17:59 ` Regression in ptrace (Wine) starting with 2.6.33-rc1, fixes Frederic Weisbecker
2010-02-18 19:27 ` Michael Stefaniuc
2010-02-18 19:41 ` Alexandre Julliard
2010-02-19 17:19 ` Frederic Weisbecker
2010-02-19 17:17 ` Frederic Weisbecker
2010-02-18 18:00 ` [PATCH 1/2] hw-breakpoints: Accept breakpoints on NULL address Frederic Weisbecker
2010-02-18 21:16 ` Roland McGrath
2010-02-19 17:38 ` Frederic Weisbecker
2010-02-19 8:51 ` K.Prasad
2010-02-18 18:00 ` [PATCH 2/2] hw-breakpoint: Keep track of dr7 local enable bits Frederic Weisbecker
2010-02-19 8:45 ` K.Prasad
2010-02-19 15:34 ` Frederic Weisbecker
2010-02-19 17:58 ` K.Prasad
2010-02-19 18:03 ` Frederic Weisbecker
2010-02-19 8:58 ` K.Prasad
2010-02-19 15:49 ` Frederic Weisbecker
2010-02-19 17:41 ` Frederic Weisbecker
2010-02-19 18:04 ` K.Prasad
2010-02-19 18:12 ` [GIT PULL] hw-breakpoint regression fixes Frederic Weisbecker
2010-02-22 9:56 ` Ingo Molnar
2010-02-19 18:12 ` [PATCH 1/2] hw-breakpoints: Accept breakpoints on NULL address Frederic Weisbecker
2010-02-19 18:12 ` [PATCH 2/2] hw-breakpoint: Keep track of dr7 local enable bits Frederic Weisbecker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4B7719AC.6040901@redhat.com \
--to=mstefani@redhat.com \
--cc=fweisbec@gmail.com \
--cc=julliard@winehq.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maciej.rutecki@gmail.com \
--cc=maneesh@linux.vnet.ibm.com \
--cc=prasad@linux.vnet.ibm.com \
--cc=rjw@sisk.pl \
--cc=stern@rowland.harvard.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).