From b90ba316b54db321d3e8aaac7df93b46d80b9d9c Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期二, 22 十二月 2020 15:47:41 +0800
Subject: [PATCH] 三个没有回收的信号

---
 src/queue/mm.c |   16 +++++++++++-----
 1 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/queue/mm.c b/src/queue/mm.c
index 979cced..dc6f5be 100644
--- a/src/queue/mm.c
+++ b/src/queue/mm.c
@@ -310,7 +310,14 @@
   if(shmctl(shmid, IPC_STAT, &shmid_ds) == 0) {
     //LoggerFactory::getLogger()->debug("shm_nattch=%d\n", shmid_ds.shm_nattch);
     // 鍙湁褰撳墠涓�涓繘绋媋ttach鍒板叡浜唴瀛樹笂
-    if(shmid_ds.shm_nattch == 1) {
+    if (shmid_ds.shm_nattch > 1) {
+      //detache
+      if (shmdt(shmp) == -1) {
+        LoggerFactory::getLogger()->error(errno, "mm_destroy shmdt");
+      }
+      SemUtil::inc(mutex);
+      return false;
+    } else  {
       
       hashtable_destroy(hashtable);
       //detache
@@ -326,14 +333,13 @@
       else 
          LoggerFactory::getLogger()->debug("shared memory destroy\n");
 
+      LoggerFactory::getLogger()->debug(errno, "mm_destroy: real destroy.");
+
       SemUtil::inc(mutex);
       SemUtil::remove(mutex);
       return true;
 
-    } else {
-      SemUtil::inc(mutex);
-      return false;
-    }
+    } 
     
   } else {
     err_msg(errno, "mm_destroy shmctl IPC_STAT");

--
Gitblit v1.8.0