diff --git a/src/libevp-agent/module_impl_obj.c b/src/libevp-agent/module_impl_obj.c index ad10165..bf8a9d4 100644 --- a/src/libevp-agent/module_impl_obj.c +++ b/src/libevp-agent/module_impl_obj.c @@ -114,6 +114,9 @@ module_impl_obj_load(struct module *m, const struct Module *modspec) return EINVAL; } } else if (ret != ENOENT) { + /* Clean up the module if some IO error occurs. */ + plat_mod_fs_file_unlink(m); + /* some IO error in check_hash */ return ret; } diff --git a/src/libevp-agent/platform.c b/src/libevp-agent/platform.c index 47b3ffc..d4a5f99 100644 --- a/src/libevp-agent/platform.c +++ b/src/libevp-agent/platform.c @@ -135,7 +135,8 @@ plat_mod_fs_file_mmap(struct module *module, const void **data, size_t *size, struct stat sb; if (fstat(fd, &sb) == -1) { *error = errno; - xlog_error("%s: error on stat: %d", __func__, *error); + xlog_error("%s: error on stat %s(%d): errno=%d", __func__, + filename, fd, *error); goto failure; } @@ -145,7 +146,8 @@ plat_mod_fs_file_mmap(struct module *module, const void **data, size_t *size, if (addr == MAP_FAILED) { *error = errno; - xlog_error("%s: error on mmap: %d", __func__, errno); + xlog_error("%s: error on mmap %s(%d): errno=%d, st_size=%zu", + __func__, filename, fd, errno, sb.st_size); goto failure; }