diff options
| author | Jess Frazelle <me@jessfraz.com> | 2017-08-15 12:13:23 -0400 |
|---|---|---|
| committer | Jessie Frazelle <me@jessfraz.com> | 2017-08-23 14:56:03 +0000 |
| commit | e974f4fddf385b81036609d6008b923377d18e99 (patch) | |
| tree | 41c84725e01e6dd6a5485c35bd35ab426c307cf6 /src/syscall/exec_linux.go | |
| parent | 0c7fd56951cff83bb7b23f64a712327bab154514 (diff) | |
| download | go-e974f4fddf385b81036609d6008b923377d18e99.tar.xz | |
syscall: move ptrace setup to right before exec
This will prevent any ptrace calls from getting trace output from the runtime
itself setting up after fork.
Fixes #21428.
Change-Id: I9d835bd5a8f404394eb6237679f2111a72e5bc17
Reviewed-on: https://go-review.googlesource.com/55811
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Avelino <t@avelino.xxx>
Diffstat (limited to 'src/syscall/exec_linux.go')
| -rw-r--r-- | src/syscall/exec_linux.go | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/syscall/exec_linux.go b/src/syscall/exec_linux.go index fd87b86ff8..bfbe2b3d59 100644 --- a/src/syscall/exec_linux.go +++ b/src/syscall/exec_linux.go @@ -199,14 +199,6 @@ func forkAndExecInChild1(argv0 *byte, argv, envv []*byte, chroot, dir *byte, att } } - // Enable tracing if requested. - if sys.Ptrace { - _, _, err1 = RawSyscall(SYS_PTRACE, uintptr(PTRACE_TRACEME), 0, 0) - if err1 != 0 { - goto childerror - } - } - // Session ID if sys.Setsid { _, _, err1 = RawSyscall(SYS_SETSID, 0, 0, 0) @@ -402,6 +394,16 @@ func forkAndExecInChild1(argv0 *byte, argv, envv []*byte, chroot, dir *byte, att } } + // Enable tracing if requested. + // Do this right before exec so that we don't unnecessarily trace the runtime + // setting up after the fork. See issue #21428. + if sys.Ptrace { + _, _, err1 = RawSyscall(SYS_PTRACE, uintptr(PTRACE_TRACEME), 0, 0) + if err1 != 0 { + goto childerror + } + } + // Time to exec. _, _, err1 = RawSyscall(SYS_EXECVE, uintptr(unsafe.Pointer(argv0)), |
