From a3b5bbf4e70dfa2bd557a7a759eae510ac823f43 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Sat, 30 Oct 2021 22:34:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Darm64=E4=B8=8B=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E8=B0=83=E7=94=A8syscall.Dup2=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/nodes/node.go | 32 --------------------- internal/nodes/node_panic.go | 46 ++++++++++++++++++++++++++++++ internal/nodes/node_panic_arm64.go | 10 +++++++ 3 files changed, 56 insertions(+), 32 deletions(-) create mode 100644 internal/nodes/node_panic.go create mode 100644 internal/nodes/node_panic_arm64.go diff --git a/internal/nodes/node.go b/internal/nodes/node.go index 42b083e..5c917e9 100644 --- a/internal/nodes/node.go +++ b/internal/nodes/node.go @@ -1,7 +1,6 @@ package nodes import ( - "bytes" "encoding/json" "errors" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" @@ -29,7 +28,6 @@ import ( "os/exec" "runtime" "sync" - "syscall" "time" ) @@ -537,33 +535,3 @@ func (this *Node) listenSock() error { return nil } - -// 处理异常 -func (this *Node) handlePanic() { - // 如果是在前台运行就直接返回 - backgroundEnv, _ := os.LookupEnv("EdgeBackground") - if backgroundEnv != "on" { - return - } - - var panicFile = Tea.Root + "/logs/panic.log" - - // 分析panic - data, err := ioutil.ReadFile(panicFile) - if err == nil { - var index = bytes.Index(data, []byte("panic:")) - if index >= 0 { - remotelogs.Error("NODE", "系统错误,请上报给开发者: "+string(data[index:])) - } - } - - fp, err := os.OpenFile(panicFile, os.O_CREATE|os.O_TRUNC|os.O_WRONLY|os.O_APPEND, 0777) - if err != nil { - logs.Println("NODE", "open 'panic.log' failed: "+err.Error()) - return - } - err = syscall.Dup2(int(fp.Fd()), int(os.Stderr.Fd())) - if err != nil { - logs.Println("NODE", "write to 'panic.log' failed: "+err.Error()) - } -} diff --git a/internal/nodes/node_panic.go b/internal/nodes/node_panic.go new file mode 100644 index 0000000..8869d18 --- /dev/null +++ b/internal/nodes/node_panic.go @@ -0,0 +1,46 @@ +// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. +//go:build !arm64 +// +build !arm64 + +package nodes + +import ( + "bytes" + "github.com/TeaOSLab/EdgeNode/internal/remotelogs" + "github.com/iwind/TeaGo/Tea" + "github.com/iwind/TeaGo/logs" + "io/ioutil" + "os" + "syscall" +) + +// 处理异常 +func (this *Node) handlePanic() { + // 如果是在前台运行就直接返回 + backgroundEnv, _ := os.LookupEnv("EdgeBackground") + if backgroundEnv != "on" { + return + } + + var panicFile = Tea.Root + "/logs/panic.log" + + // 分析panic + data, err := ioutil.ReadFile(panicFile) + if err == nil { + var index = bytes.Index(data, []byte("panic:")) + if index >= 0 { + remotelogs.Error("NODE", "系统错误,请上报给开发者: "+string(data[index:])) + } + } + + fp, err := os.OpenFile(panicFile, os.O_CREATE|os.O_TRUNC|os.O_WRONLY|os.O_APPEND, 0777) + if err != nil { + logs.Println("NODE", "open 'panic.log' failed: "+err.Error()) + return + } + err = syscall.Dup2(int(fp.Fd()), int(os.Stderr.Fd())) + if err != nil { + logs.Println("NODE", "write to 'panic.log' failed: "+err.Error()) + } +} + diff --git a/internal/nodes/node_panic_arm64.go b/internal/nodes/node_panic_arm64.go new file mode 100644 index 0000000..c38fec8 --- /dev/null +++ b/internal/nodes/node_panic_arm64.go @@ -0,0 +1,10 @@ +// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. +//go:build arm64 +// +build arm64 + +package nodes + +// 处理异常 +func (this *Node) handlePanic() { + return +}