summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2010-09-19 16:20:27 +0200
committerGuido Günther <agx@sigxcpu.org>2010-09-19 16:20:27 +0200
commitc6bbc371aca336e3df2368149fd8a34b6a7d3ede (patch)
tree513bb61120fd95e7f7c71540d22bb1f4b6c845b4
parent488b19a33fcca3df739809fbf0430ebde9a282d5 (diff)
Handle deleted files in /proc/<pid>/exe
-rwxr-xr-xwhatmaps8
1 files changed, 8 insertions, 0 deletions
diff --git a/whatmaps b/whatmaps
index 779b7dc..f7a62a0 100755
--- a/whatmaps
+++ b/whatmaps
@@ -31,6 +31,7 @@ class PkgError(Exception):
class Process(object):
"""A process, needs /proc mounted"""
+ deleted_re = re.compile(r"(?P<exe>.*) \(deleted\)$")
def __init__(self, pid):
self.pid = pid
@@ -38,6 +39,13 @@ class Process(object):
try:
# Linux only so far
self.exe = os.readlink('/proc/%d/exe' % self.pid)
+ if not os.path.exists(self.exe):
+ m = self.deleted_re.match(self.exe)
+ if m:
+ self.exe = m.group('exe')
+ logging.debug("Using deleted exe %s", self.exe)
+ else:
+ logging.debug("%s doesn't exist", self.exe)
self.cmdline = open('/proc/%d/cmdline' % self.pid).read()
except OSError:
self.exe = None