sevlyar / go-daemon

A library for writing system daemons in golang.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Incorrect command string passed to process manager

timfallmk opened this issue · comments

commented

When spawning the child process, the cmd that's reported to the system (accessible via ps and top etc.) truncates the process name.

For example:
A child process that's command --flag verb is reported as --flag verb

ps -p <pid>
  PID TTY           TIME CMD
 6483 ??         0:01.78 --flag verb

I suspect this is related to #33 and #34

@timfallmk It can be caused by an incorrect Context.Args value. A value of Context.Args field is passed to os.StartProcess without any modifications exclude a case when the value is nil. Please see os.StartProcess, os.Args for the reference.
Could you provide the code and info about OS and environment (go env && uname -a).

commented

Go env:

go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/timfall/Library/Caches/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/timfall/Code/go"
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/rs/97ytdh4946n_7g59d2x8jh2h0000gn/T/go-build122390918=/tmp/go-build -gno-record-gcc-switches -fno-common"
Darwin 17.5.0 Darwin Kernel Version 17.5.0: Sun Feb 11 23:54:24 PST 2018; root:xnu-4570.50.279~25/RELEASE_X86_64 x86_64

If the expected behavior is as you outlined, then this is a bug.

I checked it on examples/gd-simple and i can't reproduce the bug.

➜  examples git:(master) ✗ gd-simple
➜  examples git:(master) ✗ ps -eafwA | grep sample
  501 38137     1   0 11:24   ??         0:00.01 [go-daemon sample]

When i comment line no 23 of the code:

➜  examples git:(master) ✗ gd-simple
➜  examples git:(master) ✗ ps -eafwA | grep gd-simple
  501 37910     1   0 11:22   ??         0:00.01 gd-simple
➜  examples git:(master) ✗ kill `cat pid`
➜  examples git:(master) ✗ gd-simple -a -b 
➜  examples git:(master) ✗ ps -eafwA | grep gd-simple
  501 37999     1   0 11:23   ??         0:00.01 gd-simple -a -b

Could you provide a reduced example of code and steps to reproduce the bug. Thank you.