From 4f8b80fcc1983b748c4ce10b6fd1f4b5849a2aa9 Mon Sep 17 00:00:00 2001 From: wanyaoqi Date: Mon, 14 Sep 2020 18:19:30 +0800 Subject: [PATCH] webconsole: fix defer order to release zombie process --- pkg/webconsole/service/service.go | 7 +++++++ pkg/webconsole/session/pty_session.go | 7 ++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/pkg/webconsole/service/service.go b/pkg/webconsole/service/service.go index 0085f0b559..7c646f69d7 100644 --- a/pkg/webconsole/service/service.go +++ b/pkg/webconsole/service/service.go @@ -26,6 +26,7 @@ import ( "github.com/gorilla/mux" "yunion.io/x/log" + "yunion.io/x/pkg/util/signalutils" api "yunion.io/x/onecloud/pkg/apis/webconsole" "yunion.io/x/onecloud/pkg/appsrv" @@ -66,9 +67,15 @@ func StartService() { common_options.StartOptionManager(opts, opts.ConfigSyncPeriodSeconds, api.SERVICE_TYPE, api.SERVICE_VERSION, o.OnOptionsChange) + registerSigTraps() start() } +func registerSigTraps() { + signalutils.SetDumpStackSignal() + signalutils.StartTrap() +} + func start() { baseOpts := &o.Options.BaseOptions // commonOpts := &o.Options.CommonOptions diff --git a/pkg/webconsole/session/pty_session.go b/pkg/webconsole/session/pty_session.go index f7dfd744cc..e545e33ada 100644 --- a/pkg/webconsole/session/pty_session.go +++ b/pkg/webconsole/session/pty_session.go @@ -102,6 +102,10 @@ func (p *Pty) Resize(size *pty.Winsize) { func (p *Pty) Stop() (err error) { var errs []error + defer func() { + p.Cmd, p.Pty = nil, nil + }() + defer func() { err = errors.NewAggregate(errs) }() @@ -139,8 +143,5 @@ func (p *Pty) Stop() (err error) { } }() - defer func() { - p.Cmd, p.Pty = nil, nil - }() return }