Update of /cvsroot/sblim/sfcb
In directory vz-cvs-3.sog:/tmp/cvs-serv21691
Modified Files:
providerMgr.c
Log Message:
[3497096] double free during stopProc
Index: providerMgr.c
===================================================================
RCS file: /cvsroot/sblim/sfcb/providerMgr.c,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -d -r1.77 -r1.78
--- providerMgr.c 5 Mar 2012 18:13:43 -0000 1.77
+++ providerMgr.c 5 Mar 2012 19:11:54 -0000 1.78
@@ -124,6 +124,9 @@
free(req);
}
+int prov_rdy_state = -1; /* 3497096 :77022 - stopBroker() reads this value */
+pthread_mutex_t syncMtx=PTHREAD_MUTEX_INITIALIZER; /* shared with stopBroker */
+
/* -------------
* ---
* Instance Provider support
@@ -966,10 +969,18 @@
_SFCB_TRACE(1,("--- Mgr request for %s-%s (%d) from %d", req->nameSpace.data,
req->className.data,req->type,requestor));
+ pthread_mutex_lock(&syncMtx); /* 77022 */
+ prov_rdy_state = -1;
+ pthread_mutex_unlock(&syncMtx);
+
sigprocmask(SIG_SETMASK, &mask, &old_mask);
hdlr = mHandlers[req->type];
hdlr.handler(&requestor, req);
sigprocmask(SIG_SETMASK, &old_mask, NULL);
+
+ pthread_mutex_lock(&syncMtx); /* 77022 */
+ prov_rdy_state = 1;
+ pthread_mutex_unlock(&syncMtx);
_SFCB_TRACE(1,("--- Mgr request for %s-%s DONE", req->nameSpace.data,
req->className.data));
|