From: Petr Tesarik <ptesarik@suse.cz>
To: Petr Tesarik <ptesarik@suse.cz>
Cc: Luming Yu <luming.yu@gmail.com>,
Roland McGrath <roland@redhat.com>,
LKML <linux-kernel@vger.kernel.org>,
linux-ia64@vger.kernel.org
Subject: Re: [RFC PATCH] set TASK_TRACED before arch_ptrace code to fix a race
Date: Tue, 03 Jun 2008 16:32:57 +0200 [thread overview]
Message-ID: <48455619.6040608@suse.cz> (raw)
In-Reply-To: <48450864.6080707@suse.cz>
Petr Tesarik wrote:
> Luming Yu wrote:
>> On Tue, May 27, 2008 at 2:25 PM, Petr Tesarik <ptesarik@suse.cz> wrote:
>>> On Mon, 2008-05-26 at 23:12 -0700, Roland McGrath wrote:
>>>>> [<a00000010000a9f0>] skip_rbs_switch+0xe0/0x110
>>>>> sp=e000000141c9fe30 bsp=e000000141c90cf8
>>>>> [<a000000000010740>] __kernel_syscall_via_break+0x0/0x20
>>>>> sp=e000000141ca0000 bsp=e000000141c90cf8
>>> Indeed, there seems to be a large hole here. So, this is either a bug in
>>> the unwinder, or a bug in the RBS synchronization, which causes
>>> corruption. My test machine currently needs some work to run 2.6.25
>>> again, but I'll try your test case as soon as I re-install it later this
>>> week.
>> Just want to check if the test case works for you?
>
> Yes, the test case hangs here too. But the problem seems to be
> elsewhere. Did you look into the strace output? This line is pretty
> suspicious:
>
> 3258 clone2(child_stack=0, stack_size=0,
> flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD,
> child_tidptr=0x200000000004e290) = 1
>
> Obviously, strace cannot attach PID 1, and since it is not designed to
> handle this situation, it hangs. I'm going to investigate why the return
> value of the clone2 syscall is seen as 1 by the tracer. Might even turn
> out to be a bug in strace...
It's definitely a bug in strace. For some reason (I don't care about)
the execve() syscall produces an extra notification. However, this
notification message is suppressed when SIGTRAP is blocked. This
explains why the test case fails only when SIGTRAP is blocked.
Now, you may ask why it only fails on ia64 and not on i386 or x86_64.
Well, I was so good that I even looked into strace sources to make sure.
Whereas for i386 and x86_64, the value of EAX/RAX is checked for -ENOSYS
in syscall_fixup(), for ia64 the first ptrace() after an execve() is
unconditionally ignored, see code in get_scno().
I don't know why Luming's fix helps here, but, please, fix strace, don't
introduce weird behaviour in the kernel.
The only thing I'm willing to talk about is why the extra notification
message is sent, and how userspace (strace) is supposed to recognize it.
FWIW the backtrace (system tap was at __group_send_sig_info):
0xa0000001000b1a60 : __group_send_sig_info+0x0/0x180 []
0xa0000001000b1e30 : do_notify_parent_cldstop+0x250/0x2c0 []
0xa0000001000b2230 : ptrace_stop+0x2b0/0x3c0 []
0xa0000001000b5200 : get_signal_to_deliver+0x200/0xa40 []
0xa000000100035920 : ia64_do_signal+0xa0/0xee0 []
0xa000000100014b60 : do_notify_resume_user+0x100/0x160 []
0xa00000010000d040 : notify_resume_user+0x40/0x60 []
0xa00000010000cf40 : skip_rbs_switch+0xf0/0x150 []
0xa000000000010620 : __kernel_syscall_via_break+0x0/0x20 []
Regards,
Petr Tesarik
next prev parent reply other threads:[~2008-06-03 14:34 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-22 2:47 [RFC PATCH] set TASK_TRACED before arch_ptrace code to fix a race Luming Yu
2008-05-22 8:47 ` Petr Tesarik
2008-05-22 9:16 ` Luming Yu
2008-05-22 11:18 ` Roland McGrath
2008-05-22 12:12 ` Petr Tesarik
2008-05-22 20:39 ` Roland McGrath
2008-05-23 12:33 ` Luming Yu
2008-05-22 13:24 ` Luming Yu
2008-05-22 20:34 ` Roland McGrath
2008-05-23 3:42 ` Luming Yu
2008-05-23 4:19 ` Roland McGrath
2008-05-23 5:24 ` Luming Yu
2008-05-26 0:15 ` Roland McGrath
2008-05-26 1:30 ` Luming Yu
2008-05-27 3:31 ` Luming Yu
2008-05-27 4:04 ` Roland McGrath
2008-05-27 5:49 ` Luming Yu
2008-05-27 6:12 ` Roland McGrath
2008-05-27 6:25 ` Petr Tesarik
2008-06-03 6:04 ` Luming Yu
2008-06-03 9:01 ` Petr Tesarik
2008-06-03 14:32 ` Petr Tesarik [this message]
2008-06-03 21:01 ` Roland McGrath
2008-06-03 21:31 ` Luck, Tony
2008-06-03 22:13 ` Roland McGrath
2008-06-10 8:23 ` Luming Yu
2008-06-04 2:16 ` Luming Yu
2008-06-04 9:16 ` Petr Tesarik
2008-06-05 1:49 ` Luming Yu
2008-06-05 11:16 ` Petr Tesarik
2008-06-06 0:07 ` Roland McGrath
2008-09-09 3:06 ` Luming Yu
2008-09-10 5:55 ` Roland McGrath
2008-09-16 8:50 ` Luming Yu
2008-09-17 17:01 ` Roland McGrath
2008-09-18 5:44 ` Luming Yu
2008-05-27 6:34 ` Luming Yu
2008-05-27 8:48 ` Luming Yu
2008-05-28 9:14 ` Luming Yu
2008-06-03 6:02 ` Luming Yu
2008-05-30 8:05 ` Roland McGrath
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=48455619.6040608@suse.cz \
--to=ptesarik@suse.cz \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luming.yu@gmail.com \
--cc=roland@redhat.com \
/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