Hi Nhat,

        This has already been addressed by ticket 1510.

Alex

-----------------------------
  osaf/services/saf/cpsv/cpnd/cpnd_evt.c |  7 +++++--
  1 files changed, 5 insertions(+), 2 deletions(-)


Problem:
In case handling openning checkpoint fails after adding the ckpt node into the
ckpt_info_db, cpnd jumps to ckpt_shm_node_free_error which doesn't delete the
node from the db. This leads coredump when the cpnd searches ckpt node in db
later.

Fix:
To introduce a new lable for handling error in above case to delete ckpt node
from db tree.

diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_evt.c 
b/osaf/services/saf/cpsv/cpnd/cpnd_evt.c
--- a/osaf/services/saf/cpsv/cpnd/cpnd_evt.c
+++ b/osaf/services/saf/cpsv/cpnd/cpnd_evt.c
@@ -861,7 +861,7 @@ static uint32_t cpnd_evt_proc_ckpt_open(
                        SaCkptSectionIdT sec_id = SA_CKPT_DEFAULT_SECTION_ID;
                        if(cpnd_ckpt_sec_add(cp_node, &sec_id, 0, 0) == NULL) {
                                TRACE_4("cpnd ckpt rep create failed with 
rc:%d",rc);
-                               goto ckpt_shm_node_free_error;
+                               goto ckpt_node_delete_from_db_tree_error;
                        }
                }
                if (out_evt) {
@@ -903,7 +903,7 @@ static uint32_t cpnd_evt_proc_ckpt_open(
                        } else {
                                if ((out_evt) && (out_evt->info.cpnd.error != 
SA_AIS_OK)) {
                                        send_evt.info.cpa.info.openRsp.error = 
out_evt->info.cpnd.error;
-                                       goto ckpt_shm_node_free_error;
+                                       goto 
ckpt_node_delete_from_db_tree_error;
                                } else if ((out_evt) && 
(out_evt->info.cpnd.error == SA_AIS_OK) &&
                                           
(!out_evt->info.cpnd.info.ckpt_nd2nd_sync.num_of_elmts)) {
                                        goto agent_rsp2;
@@ -955,6 +955,9 @@ static uint32_t cpnd_evt_proc_ckpt_open(
        TRACE_4("cpnd ckpt open failure client_hdl:%llx",client_hdl);
        goto agent_rsp;
  
+ ckpt_node_delete_from_db_tree_error:
+       cpnd_ckpt_node_del(cb, cp_node);
+
   ckpt_shm_node_free_error:
        cpnd_ckpt_replica_destroy(cb, cp_node, &error);
  



------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to