Hello, I backported the commit 253b3720fb43 from the upstream. Everything is works fine when applied. You will find a patch for the package's repository.
-- Jimmy
>From 86877f0895a99f266cf4fa92d391d2be072dc397 Mon Sep 17 00:00:00 2001 From: Jimmy Thrasibule <thrasibule.ji...@gmail.com> Date: Sun, 15 Apr 2012 19:33:36 +0200 Subject: [PATCH] add patch to fix bug #660860 --- debian/patches/fix-bug-660860 | 53 +++++++++++++++++++++++++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 54 insertions(+), 0 deletions(-) create mode 100644 debian/patches/fix-bug-660860 diff --git a/debian/patches/fix-bug-660860 b/debian/patches/fix-bug-660860 new file mode 100644 index 0000000..ed9a4cc --- /dev/null +++ b/debian/patches/fix-bug-660860 @@ -0,0 +1,53 @@ +Index: cfengine-debian/src/cf.defs.h +=================================================================== +--- cfengine-debian.orig/src/cf.defs.h ++++ cfengine-debian/src/cf.defs.h +@@ -382,6 +382,7 @@ typedef int clockid_t; + #define CF_EXEC_EXPIREAFTER 1 + + #define MAXIP4CHARLEN 16 ++#define PACK_UPIFELAPSED_SALT "packageuplist" + + /*******************************************************************/ + /* DBM */ +Index: cfengine-debian/src/promises.c +=================================================================== +--- cfengine-debian.orig/src/promises.c ++++ cfengine-debian/src/promises.c +@@ -776,7 +776,11 @@ md = EVP_get_digestbyname(FileHashName(t + + EVP_DigestInit(&context,md); + +-EVP_DigestUpdate(&context,pp->promiser,strlen(pp->promiser)); ++// multiple packages (promisers) may share same package_list_update_ifelapsed lock ++if(!(salt && (strncmp(salt, PACK_UPIFELAPSED_SALT, sizeof(PACK_UPIFELAPSED_SALT) - 1) == 0))) ++ { ++ EVP_DigestUpdate(&context,pp->promiser,strlen(pp->promiser)); ++ } + + if (pp->ref) + { +Index: cfengine-debian/src/verify_packages.c +=================================================================== +--- cfengine-debian.orig/src/verify_packages.c ++++ cfengine-debian/src/verify_packages.c +@@ -59,7 +59,7 @@ PromiseBanner(pp); + + if (a.packages.package_list_update_command) + { +- snprintf(lockname,CF_BUFSIZE-1,"package-%s-%s",pp->promiser,a.packages.package_list_update_command); ++ snprintf(lockname,CF_BUFSIZE-1,"%s-%s",PACK_UPIFELAPSED_SALT,a.packages.package_list_update_command); + + al = a; + +@@ -73,9 +73,8 @@ if (a.packages.package_list_update_comma + if (thislock.lock != NULL) + { + ExecPackageCommand(a.packages.package_list_update_command,false,al,pp); ++ YieldCurrentLock(thislock); + } +- +- YieldCurrentLock(thislock); + } + + // Now verify the package itself diff --git a/debian/patches/series b/debian/patches/series index 6a99a2c..902d2e5 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -2,3 +2,4 @@ remove-man-errors fhs-compliance fix-examples-paths fix-error-typos +fix-bug-660860 -- 1.7.7.6