From: Narasimha S. <nsh...@us...> - 2012-03-05 19:11:56
|
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)); |