diff options
author | Giampaolo Rodola <g.rodola@gmail.com> | 2018-10-19 21:49:40 +0200 |
---|---|---|
committer | Giampaolo Rodola <g.rodola@gmail.com> | 2018-10-19 21:49:40 +0200 |
commit | 7300bd48b4ea6fd98309cc9da569d6015b1ac24a (patch) | |
tree | b36640c81154a517447c2abe347dc5a4aab4d298 /psutil/_pslinux.py | |
parent | fbece8e45991e8cc070bfd5e9efcd4974227abcd (diff) | |
download | psutil-7300bd48b4ea6fd98309cc9da569d6015b1ac24a.tar.gz |
fix #1004: Process.io_counters() may raise ValueError
Diffstat (limited to 'psutil/_pslinux.py')
-rw-r--r-- | psutil/_pslinux.py | 29 |
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 " |