From ddcedf309bc7ceee022e3d0213175f498cb6dc65 Mon Sep 17 00:00:00 2001 From: huazhiqiang Date: Tue, 12 May 2026 17:46:32 +0800 Subject: [PATCH 1/2] fix shrreg initialization failure handling Signed-off-by: huazhiqiang --- src/multiprocess/multiprocess_memory_limit.c | 26 +++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/multiprocess/multiprocess_memory_limit.c b/src/multiprocess/multiprocess_memory_limit.c index fce713ba..17f11d25 100755 --- a/src/multiprocess/multiprocess_memory_limit.c +++ b/src/multiprocess/multiprocess_memory_limit.c @@ -1090,28 +1090,34 @@ void try_create_shrreg() { int fd = open(shr_reg_file, O_RDWR | O_CREAT, 0666); if (fd == -1) { LOG_ERROR("Fail to open shrreg %s: errno=%d", shr_reg_file, errno); + goto fail; } region_info.fd = fd; - size_t offset = lseek(fd, SHARED_REGION_SIZE_MAGIC, SEEK_SET); + off_t offset = lseek(fd, SHARED_REGION_SIZE_MAGIC, SEEK_SET); if (offset != SHARED_REGION_SIZE_MAGIC) { LOG_ERROR("Fail to init shrreg %s: errno=%d", shr_reg_file, errno); + goto fail; } - size_t check_bytes = write(fd, "\0", 1); + ssize_t check_bytes = write(fd, "\0", 1); if (check_bytes != 1) { LOG_ERROR("Fail to write shrreg %s: errno=%d", shr_reg_file, errno); + goto fail; } if (lseek(fd, 0, SEEK_SET) != 0) { LOG_ERROR("Fail to reseek shrreg %s: errno=%d", shr_reg_file, errno); + goto fail; } region_info.shared_region = (shared_region_t*) mmap( - NULL, SHARED_REGION_SIZE_MAGIC, + NULL, SHARED_REGION_SIZE_MAGIC, PROT_WRITE | PROT_READ, MAP_SHARED, fd, 0); shared_region_t* region = region_info.shared_region; - if (region == NULL) { + if (region == MAP_FAILED) { LOG_ERROR("Fail to map shrreg %s: errno=%d", shr_reg_file, errno); + goto fail; } if (lockf(fd, F_LOCK, SHARED_REGION_SIZE_MAGIC) != 0) { LOG_ERROR("Fail to lock shrreg %s: errno=%d", shr_reg_file, errno); + goto fail; } //put_device_info(); int32_t init_flag = atomic_load_explicit(®ion->initialized_flag, memory_order_acquire); @@ -1173,6 +1179,18 @@ void try_create_shrreg() { LOG_ERROR("Fail to unlock shrreg %s: errno=%d", shr_reg_file, errno); } LOG_DEBUG("shrreg created"); + return; + +fail: + if (region_info.shared_region != NULL && region_info.shared_region != MAP_FAILED) { + munmap(region_info.shared_region, SHARED_REGION_SIZE_MAGIC); + } + region_info.shared_region = NULL; + if (fd != -1) { + close(fd); + } + region_info.fd = -1; + exit(-1); } void initialized() { From 5264d4d8e719a8d19d584546608f1137c4f76e7f Mon Sep 17 00:00:00 2001 From: huazq Date: Sat, 30 May 2026 18:27:36 +0800 Subject: [PATCH 2/2] address review comment for exit status Signed-off-by: huazhiqiang --- src/multiprocess/multiprocess_memory_limit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/multiprocess/multiprocess_memory_limit.c b/src/multiprocess/multiprocess_memory_limit.c index 17f11d25..b47073bc 100755 --- a/src/multiprocess/multiprocess_memory_limit.c +++ b/src/multiprocess/multiprocess_memory_limit.c @@ -1190,7 +1190,7 @@ void try_create_shrreg() { close(fd); } region_info.fd = -1; - exit(-1); + exit(EXIT_FAILURE); } void initialized() {