提交 54f094ba 编写于 作者: J jingrui

isulad: add more error message for debug

Signed-off-by: Njingrui <jingrui@huawei.com>
上级 554450a5
...@@ -89,63 +89,71 @@ static void file_read_int(const char *fname, int *val) ...@@ -89,63 +89,71 @@ static void file_read_int(const char *fname, int *val)
free(sint); free(sint);
} }
static char *get_err_message(const char *workdir, const char *file) static void get_err_message(char *buf, int buf_size, const char *workdir, const char *file)
{ {
char fname[PATH_MAX] = {0}; char fname[PATH_MAX] = {0};
FILE *fp = NULL; FILE *fp = NULL;
char *pline = NULL; char *pline = NULL;
char *lines[3] = {0};
size_t length = 0; size_t length = 0;
if (snprintf(fname, sizeof(fname), "%s/%s", workdir, file) < 0) { if (snprintf(fname, sizeof(fname), "%s/%s", workdir, file) < 0) {
ERROR("failed make full path %s/%s", workdir, file); ERROR("failed make full path %s/%s", workdir, file);
return NULL; return;
} }
fp = util_fopen(fname, "r"); fp = util_fopen(fname, "r");
if (fp == NULL) { if (fp == NULL) {
return NULL; return;
} }
while (getline(&pline, &length, fp) != -1) { while (getline(&pline, &length, fp) != -1) {
if (pline == NULL) { if (pline == NULL) {
return NULL; break;
} }
if (strings_contains_word(pline, "error")) { if (strings_contains_word(pline, "error")) {
return pline; if (lines[0] == NULL) {
lines[0] = pline;
pline = NULL;
continue;
}
if (lines[1] == NULL) {
lines[1] = pline;
pline = NULL;
continue;
}
if (lines[2] == NULL) {
lines[2] = pline;
pline = NULL;
break;
}
} }
} }
if (pline != NULL) { if (lines[2] != NULL) {
free(pline); (void)snprintf(buf, buf_size, "%s%s%s", lines[0], lines[1], lines[2]);
} else if (lines[1] != NULL) {
(void)snprintf(buf, buf_size, "%s%s", lines[0], lines[1]);
} else if (lines[0] != NULL) {
(void)snprintf(buf, buf_size, "%s", lines[0]);
} }
return NULL;
UTIL_FREE_AND_SET_NULL(pline);
UTIL_FREE_AND_SET_NULL(lines[0]);
UTIL_FREE_AND_SET_NULL(lines[1]);
UTIL_FREE_AND_SET_NULL(lines[2]);
} }
static void show_shim_runtime_errlog(const char *workdir) static void show_shim_runtime_errlog(const char *workdir)
{ {
char buf[BUFSIZ] = {0}; char buf[BUFSIZ] = {0};
char *log1 = NULL; char buf1[BUFSIZ/2] = {0};
char *log2 = NULL; char buf2[BUFSIZ/2] = {0};
log1 = get_err_message(workdir, "shim-log.json");
if (log1 != NULL) {
ERROR("shim-log error %s", log1);
} else {
log1 = util_strdup_s("NULL");
}
log2 = get_err_message(workdir, "log.json"); get_err_message(buf1, BUFSIZ/2, workdir, "shim-log.json");
if (log2 != NULL) { get_err_message(buf2, BUFSIZ/2, workdir, "log.json");
ERROR("runtime-log error %s", log2); (void)snprintf(buf, sizeof(buf), "shim-log error: %s\nruntime-log error: %s\n", buf1, buf2);
} else {
log2 = util_strdup_s("NULL");
}
(void)snprintf(buf, sizeof(buf), "shim-log error: %s\nruntime-log error: %s\n", log1, log2);
isulad_set_error_message(buf); isulad_set_error_message(buf);
UTIL_FREE_AND_SET_NULL(log1);
UTIL_FREE_AND_SET_NULL(log2);
} }
bool rt_isula_detect(const char *runtime) bool rt_isula_detect(const char *runtime)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册