| | |
| | | "analysis/logo" |
| | | "analysis/proc" |
| | | "analysis/util" |
| | | "fmt" |
| | | "runtime/debug" |
| | | "strconv" |
| | | "time" |
| | | |
| | | "context" |
| | | "flag" |
| | | |
| | | "os" |
| | | "os/exec" |
| | | "os/signal" |
| | | |
| | | "golang.org/x/sys/unix" |
| | |
| | | if role == single { |
| | | ret = proc.SingleRole(ctx, runType, id, gpu, shm) |
| | | } else if role == master { |
| | | defer dump(util.LogFile + "_dump_" + time.Now().Format("20060102150405")) |
| | | |
| | | setParamters() |
| | | ret = proc.MasterRole(ctx) |
| | | } else if role == slave { |
| | |
| | | gosdk.Free() |
| | | logo.Close() |
| | | } |
| | | |
| | | 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() |
| | | } |