If clone is called with flag CLONE_UNTRACED, I think we should
not set CLONE_PTRACE flag in its arguments.

* process.c [LINUX] (internal_fork): If the syscall is clone and
  CLONE_UNTRACED flag is set in its arguments, do not trace this
  new child.

Signed-off-by: Wang Chao <[email protected]>
---
 process.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/process.c b/process.c
index 8999fc6..851297c 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 ((sysent[tcp->scno].sys_func == sys_clone) &&
+                   (tcp->u_arg[ARG_FLAGS] & CLONE_UNTRACED))
+                       return 0;
                fork_tcb(tcp);
                if (setbpt(tcp) < 0)
                        return 0;
-- 
1.6.5.2


------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
Strace-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/strace-devel

Reply via email to