diff --git a/src/db/dbLock.c b/src/db/dbLock.c index 3e36a5d49..47f6be68d 100644 --- a/src/db/dbLock.c +++ b/src/db/dbLock.c @@ -552,13 +552,18 @@ long epicsShareAPI dbLockShowLocked(int level) int indListType; lockSet *plockSet; epicsMutexLockStatus status; - epicsMutexLockStatus lockSetModifyLockStatus; + epicsMutexLockStatus lockSetModifyLockStatus = epicsMutexLockOK; + int itry; printf("listTypeScanLock %d listTypeRecordLock %d listTypeFree %d\n", ellCount(&lockSetList[0]), ellCount(&lockSetList[1]), ellCount(&lockSetList[2])); - lockSetModifyLockStatus = epicsMutexLockWithTimeout(lockSetModifyLock,5.0); + for(itry=0; itry<100; itry++) { + lockSetModifyLockStatus = epicsMutexTryLock(lockSetModifyLock); + if(lockSetModifyLockStatus==epicsMutexLockOK) break; + epicsThreadSleep(.05); + } if(lockSetModifyLockStatus!=epicsMutexLockOK) { printf("Could not lock lockSetModifyLock\n"); epicsMutexShow(lockSetModifyLock,level); diff --git a/src/db/dbNotify.c b/src/db/dbNotify.c index b35fa7d41..d31a6b564 100644 --- a/src/db/dbNotify.c +++ b/src/db/dbNotify.c @@ -390,9 +390,14 @@ int epicsShareAPI dbNotifyDump(void) putNotify *ppn; putNotify *ppnRestart; putNotifyRecord *ppnrWait; + int itry; - lockStatus = epicsMutexLockWithTimeout(notifyLock,2.0); + for(itry=0; itry<100; itry++) { + lockStatus = epicsMutexTryLock(notifyLock); + if(lockStatus==epicsMutexLockOK) break; + epicsThreadSleep(.05); + } for(pdbRecordType = (dbRecordType *)ellFirst(&pdbbase->recordTypeList); pdbRecordType; pdbRecordType = (dbRecordType *)ellNext(&pdbRecordType->node)) {