runc/patch/0101-runc-print-memory-info-when-syscall.Exec-fail.patch
openeuler-iSula 5904ba4dcf runc: package init
Signed-off-by: openeuler-iSula <isula@huawei.com>
2019-12-29 15:34:20 +08:00

64 lines
1.9 KiB
Diff

From 574f88a1801656869b69408cf2eb0f32c6c0e4aa Mon Sep 17 00:00:00 2001
From: xiadanni1 <xiadanni1@huawei.com>
Date: Mon, 6 May 2019 02:49:36 +0800
Subject: [PATCH] runc: print memory info when syscall.Exec failed
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
reason: print system and cgroup memory info when syscall.Exec failed.
Change-Id: I4aef0ea3da16849ab82adf45db5a828c758b33ea
Signed-off-by: xiadanni1 <xiadanni1@huawei.com>
---
libcontainer/standard_init_linux.go | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/libcontainer/standard_init_linux.go b/libcontainer/standard_init_linux.go
index fd836f3..b25669f 100644
--- a/libcontainer/standard_init_linux.go
+++ b/libcontainer/standard_init_linux.go
@@ -4,12 +4,14 @@ package libcontainer
import (
"fmt"
+ "io/ioutil"
"os"
"os/exec"
"strings"
"syscall"
"time"
+ "github.com/Sirupsen/logrus"
"github.com/opencontainers/runc/libcontainer/apparmor"
"github.com/opencontainers/runc/libcontainer/configs"
"github.com/opencontainers/runc/libcontainer/keys"
@@ -212,7 +214,24 @@ func (l *linuxStandardInit) Init() error {
// https://github.com/torvalds/linux/blob/v4.9/fs/exec.c#L1290-L1318
syscall.Close(l.stateDirFD)
if err := syscall.Exec(name, l.config.Args[0:], os.Environ()); err != nil {
+ printMemoryInfo()
return newSystemErrorWithCause(err, "exec user process")
}
return nil
}
+
+func printMemoryInfo() {
+ output, err := ioutil.ReadFile("/proc/meminfo")
+ if err != nil {
+ logrus.Errorf("Failed to read /proc/meminfo, %v", err)
+ } else {
+ logrus.Infof("print memory info (/proc/meminfo): %s", string(output))
+ }
+
+ output, err = ioutil.ReadFile("/sys/fs/cgroup/memory/memory.stat")
+ if err != nil {
+ logrus.Errorf("Failed to read /sys/fs/cgroup/memory/memory.stat, %v", err)
+ } else {
+ logrus.Infof("print memory info (cgroup memory.stat): %s", string(output))
+ }
+}
--
1.8.3.1