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
This commit is contained in:
Ian Wienand 2018-11-27 12:59:04 +11:00 committed by Stephen Finucane
parent c062792709
commit b02a43291c
1 changed files with 12 additions and 10 deletions

View File

@ -24,17 +24,19 @@ def _get_report():
# 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: