From 5cc2ffed2b6e4cd1b5b5609d4e22a594e9eaab24 Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Fri, 6 May 2011 12:20:29 +0200 Subject: [PATCH] [entropy.client.interfaces.methods] _create_pid_file_lock: handle the case where execv* has been used --- libraries/entropy/client/interfaces/methods.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libraries/entropy/client/interfaces/methods.py b/libraries/entropy/client/interfaces/methods.py index 48db9673f..66691e994 100644 --- a/libraries/entropy/client/interfaces/methods.py +++ b/libraries/entropy/client/interfaces/methods.py @@ -1619,7 +1619,12 @@ class MiscMixin: if err.errno not in (errno.EACCES, errno.EAGAIN,): # ouch, wtf? raise + # lock already acquired, but might come from the same pid + stored_pid = pid_f.read(128).strip() pid_f.close() + if str(os.getpid()) == stored_pid: + # it's me, entropy (in case I called execv*) + return True return False # lock already acquired pid_f.truncate()