summaryrefslogtreecommitdiff
path: root/psutil/_pslinux.py
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2018-10-19 21:49:40 +0200
committerGiampaolo Rodola <g.rodola@gmail.com>2018-10-19 21:49:40 +0200
commit7300bd48b4ea6fd98309cc9da569d6015b1ac24a (patch)
treeb36640c81154a517447c2abe347dc5a4aab4d298 /psutil/_pslinux.py
parentfbece8e45991e8cc070bfd5e9efcd4974227abcd (diff)
downloadpsutil-7300bd48b4ea6fd98309cc9da569d6015b1ac24a.tar.gz
fix #1004: Process.io_counters() may raise ValueError
Diffstat (limited to 'psutil/_pslinux.py')
-rw-r--r--psutil/_pslinux.py29
1 files changed, 19 insertions, 10 deletions
diff --git a/psutil/_pslinux.py b/psutil/_pslinux.py
index 82e32189..71f0c984 100644
--- a/psutil/_pslinux.py
+++ b/psutil/_pslinux.py
@@ -1650,18 +1650,27 @@ class Process(object):
# https://github.com/giampaolo/psutil/issues/1004
line = line.strip()
if line:
- name, value = line.split(b': ')
- fields[name] = int(value)
+ try:
+ name, value = line.split(b': ')
+ except ValueError:
+ # https://github.com/giampaolo/psutil/issues/1004
+ continue
+ else:
+ fields[name] = int(value)
if not fields:
raise RuntimeError("%s file was empty" % fname)
- return pio(
- fields[b'syscr'], # read syscalls
- fields[b'syscw'], # write syscalls
- fields[b'read_bytes'], # read bytes
- fields[b'write_bytes'], # write bytes
- fields[b'rchar'], # read chars
- fields[b'wchar'], # write chars
- )
+ try:
+ return pio(
+ fields[b'syscr'], # read syscalls
+ fields[b'syscw'], # write syscalls
+ fields[b'read_bytes'], # read bytes
+ fields[b'write_bytes'], # write bytes
+ fields[b'rchar'], # read chars
+ fields[b'wchar'], # write chars
+ )
+ except KeyError as err:
+ raise ValueError("%r field was not found in %s; found fields "
+ "are %r" % (err[0], fname, fields))
else:
def io_counters(self):
raise NotImplementedError("couldn't find /proc/%s/io (kernel "