Handle disappearing pids in mlock_report.py
If a pid disappears on us while we're reading, we should just continue
on.
EnvironmentError is just an alias for OSError since Python 3.3, so use
the latter name. [0]
[0] https://docs.python.org/3/library/exceptions.html#OSError
Change-Id: I3a25cca328e1469f72c84a118a9691c1c0258bc4
Closes-Bug: #1926434
diff --git a/tools/mlock_report.py b/tools/mlock_report.py
index b15a0bf..1b081bb 100644
--- a/tools/mlock_report.py
+++ b/tools/mlock_report.py
@@ -24,17 +24,19 @@
# iterate over the /proc/%pid/status files manually
try:
s = open("%s/%d/status" % (psutil.PROCFS_PATH, proc.pid), 'r')
- except EnvironmentError:
+ with s:
+ for line in s:
+ result = LCK_SUMMARY_REGEX.search(line)
+ if result:
+ locked = int(result.group('locked'))
+ if locked:
+ mlock_users.append({'name': proc.name(),
+ 'pid': proc.pid,
+ 'locked': locked})
+ except OSError:
+ # pids can disappear, we're ok with that
continue
- with s:
- for line in s:
- result = LCK_SUMMARY_REGEX.search(line)
- if result:
- locked = int(result.group('locked'))
- if locked:
- mlock_users.append({'name': proc.name(),
- 'pid': proc.pid,
- 'locked': locked})
+
# produce a single line log message with per process mlock stats
if mlock_users: