[PATCH] Do not trace children created with CLONE_UNTRACED flag
Wang Chao
wang.chao at cn.fujitsu.com
Mon Sep 13 03:42:57 UTC 2010
Sent on 2010-9-10 17:26, Roland McGrath wrote:
>> I quite agree with the above change.
>
> Does that mean you tested it?
>
Very sorry for my last reply, actually there are indeed some
problems here. For syscall who has no arguments such as vfork
accessing tcp->u_arg here may result an undetermined value.
What we want to change only occur in clone syscall, so I think
we may add one more check here, just like the patch below.
What do you think?
Thanks,
Wang Chao
======
diff --git a/process.c b/process.c
index 8af960a..d587379 100644
--- a/process.c
+++ b/process.c
@@ -796,8 +796,12 @@ int
internal_fork(struct tcb *tcp)
{
if (entering(tcp)) {
+ tcp->flags &= ~TCB_FOLLOWFORK;
if (!followfork)
return 0;
+ if ((known_scno(tcp) == SYS_clone) &&
+ (tcp->u_arg[ARG_FLAGS] & CLONE_UNTRACED))
+ return 0;
fork_tcb(tcp);
if (setbpt(tcp) < 0)
return 0;
More information about the Strace-devel
mailing list