From 77aa4cc3d340374e00e2e9307721e5fd07406bcf Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Fri, 22 Feb 2002 18:53:11 +0000 Subject: [PATCH] dbCaTask must lock before clearing channel --- src/db/dbCa.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/db/dbCa.c b/src/db/dbCa.c index 26b48ec92..93c08ed0d 100644 --- a/src/db/dbCa.c +++ b/src/db/dbCa.c @@ -178,7 +178,6 @@ void epicsShareAPI dbCaRemoveLink( struct link *plink) addAction(pca,CA_CLEAR_CHANNEL); epicsMutexUnlock(pca->lock); } - long epicsShareAPI dbCaGetLink(struct link *plink,short dbrType, void *pdest, unsigned short *psevr,long *nelements) @@ -735,6 +734,9 @@ void dbCaTask() if(link_action&CA_CLEAR_CHANNEL) --removesOutstanding; epicsMutexUnlock(caListSem); /*Give it back immediately*/ if(link_action&CA_CLEAR_CHANNEL) {/*This must be first*/ + /*must lock/unlock so that dbCaRemove can unlock*/ + epicsMutexMustLock(pca->lock); + epicsMutexUnlock(pca->lock); if(pca->chid) ca_clear_channel(pca->chid); free(pca->pgetNative); free(pca->pputNative);