On Mon, 2011-10-17 at 14:02 +0200, Zdeněk Pavlas wrote:
> Zombies may never run and touch locked data again,
> so for all practical purposes, they don't exist.
> ---
>  yum/__init__.py |    6 ++++++
>  1 files changed, 6 insertions(+), 0 deletions(-)
> 
> diff --git a/yum/__init__.py b/yum/__init__.py
> index 1807d61..c3b5255 100644
> --- a/yum/__init__.py
> +++ b/yum/__init__.py
> @@ -1900,6 +1900,12 @@ class YumBase(depsolve.Depsolve):
>                          msg = _('Unable to check if PID %s is active') % 
> oldpid
>                          raise Errors.LockError(errno.EPERM, msg, oldpid)
>                  else:
> +                    try: st = open("/proc/%d/stat" % 
> oldpid).read().split()[2]
> +                    except: st = None
> +                    if st == 'Z':
> +                        # The pid is a zombie.
> +                        self._unlock(lockfile)
> +                        continue

 Where do we get zombies of extended lifetime (roll a d20 ;) from?

 How good/compat. is that info. from stat vs. taking the line from
status?

 Also, at least put this behind a "locker_alive" API call or something.

>                      # Another copy seems to be running.
>                      msg = _('Existing lock %s: another copy is running as 
> pid %s.') % (lockfile, oldpid)
>                      raise Errors.LockError(0, msg, oldpid)


_______________________________________________
Yum-devel mailing list
Yum-devel@lists.baseurl.org
http://lists.baseurl.org/mailman/listinfo/yum-devel

Reply via email to