From 3b24752e06271632f01179a5fbc69877422e4b3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B2=B3?= Date: Sat, 14 Dec 2019 15:55:19 +0800 Subject: [PATCH] catch panic --- cmd/nps/nps.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cmd/nps/nps.go b/cmd/nps/nps.go index 72f0d40..7ce6d8b 100644 --- a/cmd/nps/nps.go +++ b/cmd/nps/nps.go @@ -6,6 +6,7 @@ import ( "log" "os" "path/filepath" + "runtime" "strings" "github.com/astaxie/beego" @@ -64,6 +65,7 @@ func main() { "After=network-online.target syslog.target"} } prg := &nps{} + prg.exit = make(chan struct{}) s, err := service.New(prg, svcConfig) if err != nil { logs.Error(err) @@ -123,6 +125,14 @@ func (p *nps) Stop(s service.Service) error { } func (p *nps) run() error { + defer func() { + if err := recover(); err != nil { + const size = 64 << 10 + buf := make([]byte, size) + buf = buf[:runtime.Stack(buf, false)] + logs.Warning("nps: panic serving %v: %v\n%s", err, string(buf)) + } + }() routers.Init() task := &file.Tunnel{ Mode: "webServer",