From c46b023d7a165d4b1a32f2b6fdc00d66334597f1 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期六, 11 一月 2020 16:59:55 +0800
Subject: [PATCH] debug

---
 main.go |   53 ++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 38 insertions(+), 15 deletions(-)

diff --git a/main.go b/main.go
index 777cf7c..02e2e6c 100644
--- a/main.go
+++ b/main.go
@@ -3,7 +3,13 @@
 import (
 	"analysis/logo"
 	"analysis/util"
+	"fmt"
+	"os/exec"
+	"os/signal"
+	"runtime/debug"
 	"strconv"
+	"syscall"
+	"time"
 
 	"analysis/app/master"
 	"analysis/app/slave"
@@ -12,8 +18,6 @@
 	"flag"
 
 	"os"
-
-	"basic.com/valib/gogpu.git"
 	// "net/http"
 	// _ "net/http/pprof"
 )
@@ -36,8 +40,8 @@
 )
 
 func init() {
-	flag.StringVar(&role, "role", roleMaster, "run process role master/slave, default single")
-	flag.StringVar(&runType, "sdk", util.FeatAll, "run sdk type, face/facedetect/facecompare/yolo,etc.")
+	flag.StringVar(&role, "role", roleMaster, "run process role master/slave, default master")
+	flag.StringVar(&runType, "sdk", util.FeatAll, "run sdk type, facedetect/yolo,etc.")
 	flag.StringVar(&id, "id", util.FakeSdkID, "sdk id as ipc label")
 
 	flag.StringVar(&configPath, util.ConfigPath, "", "sdk config file path")
@@ -88,12 +92,6 @@
 
 func main() {
 
-	indices := gogpu.RankGPU()
-	if len(indices) == 0 {
-		logo.Errorln("there is no gpu for valid")
-		return
-	}
-
 	util.InitConfig()
 
 	flag.Parse()
@@ -113,18 +111,20 @@
 
 	ret := false
 	if role == roleMaster {
+		defer dump(util.LogFile + "_dump_" + time.Now().Format("20060102150405"))
 		setParamters()
-		ret = master.Run(ctx, configPath, "./libcomm.so")
+		ret = master.Run(ctx, "./libcomm.so", configPath)
 
 	} else if role == roleSlave {
 		ret = slave.Run(ctx, configPath, runType, id, gpu, shm)
+	} else if role == "test" {
+		ret = slave.TwoPluginConflict("./libcomm.so", "./zconf/Yolo.json")
 	}
 
 	if ret {
-		// c := make(chan os.Signal, 1)
-		// signal.Notify(c, os.Interrupt, os.Kill, unix.SIGTERM)
-		// <-c
-		select {}
+		c := make(chan os.Signal, 1)
+		signal.Notify(c, os.Interrupt, os.Kill, syscall.SIGTERM)
+		<-c
 	}
 
 	cancel()
@@ -143,3 +143,26 @@
 // viper.AddConfigPath("./")
 
 // envString := ""
+
+func dump(dumpFile string) {
+	dumpErr := recover()
+	if dumpErr == nil {
+		return
+	}
+	f, err := os.Create(dumpFile)
+	if err != nil {
+		return
+	}
+	f.WriteString(fmt.Sprintf("panic:\r\n%v", dumpErr))
+	f.WriteString("\r\n\nstack:\r\n")
+	f.WriteString(string(debug.Stack()))
+	f.Close()
+
+	//////////////////////////////////////////////
+	// restart master
+
+	cmd := exec.Command(os.Args[0], os.Args[1:]...)
+	cmd.Stdout = os.Stdout
+	cmd.Stderr = os.Stderr
+	cmd.Start()
+}

--
Gitblit v1.8.0