diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/docker-util.c b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/docker-util.c index 4abee027df6..7087fc5b7aa 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/docker-util.c +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/docker-util.c @@ -1204,18 +1204,23 @@ static char* normalize_mount(const char* mount, int isRegexAllowed) { } static int normalize_mounts(char **mounts, int isRegexAllowed) { - int i = 0; + int i = 0, j = 0; char *tmp = NULL; if (mounts == NULL) { return 0; } - for (i = 0; mounts[i] != NULL; ++i) { + for (i = 0, j = 0; mounts[i] != NULL; ++i) { tmp = normalize_mount(mounts[i], isRegexAllowed); + free(mounts[i]); + mounts[i] = NULL; + + //if normalize_mount() fails (e.g. crash nm_log_dirs, nm_local_dirs), ignore it. if (tmp == NULL) { - return -1; + continue; } - free(mounts[i]); - mounts[i] = tmp; + + mounts[j] = tmp; + j++; } return 0; }