From 3500d4b76df60056c248294d6d9dd3c0e152c82f Mon Sep 17 00:00:00 2001 From: Aleksei Timofeyev Date: Thu, 15 Feb 2018 11:58:04 +0800 Subject: [PATCH] Fix wrong initial semaphore state If O_CREAT is specified, and a semaphore with the given name already exists, then mode and value are ignored. The value should be set to 1 in over case. --- src/key-value-store/pers_low_level_db_access.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/key-value-store/pers_low_level_db_access.c b/src/key-value-store/pers_low_level_db_access.c index c8199d2..20ae271 100644 --- a/src/key-value-store/pers_low_level_db_access.c +++ b/src/key-value-store/pers_low_level_db_access.c @@ -258,7 +258,7 @@ sint_t pers_lldb_open(str_t const* dbPathname, pers_lldb_purpose_e ePurpose, boo DLT_LOG(persComLldbDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR); DLT_STRING(__FUNCTION__); DLT_STRING(": semaphore already exists: "); DLT_STRING(strerror(error))); //try to open existing semaphore - pLldbHandler->kissDb.kdbSem = sem_open(pLldbHandler->kissDb.semName, O_CREAT, 0644, 0); + pLldbHandler->kissDb.kdbSem = sem_open(pLldbHandler->kissDb.semName, O_CREAT, 0644, 1); error = errno; if (pLldbHandler->kissDb.kdbSem == SEM_FAILED) //open failed {