Skip to content

Commit

Permalink
Error handling and refactoring in tools/linux/procfs.py, and rename m…
Browse files Browse the repository at this point in the history
…ulti-process-rss.py.

BUG=324194
TEST=None
NOTRY=True

Review URL: https://codereview.chromium.org/108073002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@242476 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
dmikurube@chromium.org committed Dec 25, 2013
1 parent 59725c6 commit 17fd6c0
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 12 deletions.
45 changes: 33 additions & 12 deletions tools/linux/procfs.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,11 @@ def load_file(stat_f):

@staticmethod
def load(pid):
with open(os.path.join('/proc', str(pid), 'stat'), 'r') as stat_f:
return ProcStat.load_file(stat_f)
try:
with open(os.path.join('/proc', str(pid), 'stat'), 'r') as stat_f:
return ProcStat.load_file(stat_f)
except IOError:
return None

@property
def raw(self):
Expand Down Expand Up @@ -135,7 +138,10 @@ def __init__(self, raw, size, resident, share, text, lib, data, dt):

@staticmethod
def load_file(statm_f):
raw = statm_f.readlines()
try:
raw = statm_f.readlines()
except (IOError, OSError):
return None
statm = ProcStatm._PATTERN.match(raw[0])
return ProcStatm(raw,
statm.groupdict().get('SIZE'),
Expand All @@ -148,8 +154,11 @@ def load_file(statm_f):

@staticmethod
def load(pid):
with open(os.path.join('/proc', str(pid), 'statm'), 'r') as statm_f:
return ProcStatm.load_file(statm_f)
try:
with open(os.path.join('/proc', str(pid), 'statm'), 'r') as statm_f:
return ProcStatm.load_file(statm_f)
except (IOError, OSError):
return None

@property
def raw(self):
Expand Down Expand Up @@ -330,8 +339,11 @@ def load_file(maps_f):

@staticmethod
def load(pid):
with open(os.path.join('/proc', str(pid), 'maps'), 'r') as maps_f:
return ProcMaps.load_file(maps_f)
try:
with open(os.path.join('/proc', str(pid), 'maps'), 'r') as maps_f:
return ProcMaps.load_file(maps_f)
except (IOError, OSError):
return None

def append_line(self, line):
entry = self.parse_line(line)
Expand Down Expand Up @@ -555,17 +567,23 @@ def load(pid, maps):
vma_internals = collections.OrderedDict()
process_pageframe_set = set()

pagemap_fd = os.open(
os.path.join('/proc', str(pid), 'pagemap'), os.O_RDONLY)
try:
pagemap_fd = os.open(
os.path.join('/proc', str(pid), 'pagemap'), os.O_RDONLY)
except (IOError, OSError):
return None
for vma in maps:
present = 0
swapped = 0
vsize = 0
pageframes = collections.defaultdict(int)
begin_offset = ProcPagemap._offset(vma.begin)
chunk_size = ProcPagemap._offset(vma.end) - begin_offset
os.lseek(pagemap_fd, begin_offset, os.SEEK_SET)
buf = os.read(pagemap_fd, chunk_size)
try:
os.lseek(pagemap_fd, begin_offset, os.SEEK_SET)
buf = os.read(pagemap_fd, chunk_size)
except (IOError, OSError):
return None
if len(buf) < chunk_size:
_LOGGER.warn('Failed to read pagemap at 0x%x in %d.' % (vma.begin, pid))
pagemap_values = struct.unpack(
Expand All @@ -586,7 +604,10 @@ def load(pid, maps):
total_present += present
total_swapped += swapped
total_vsize += vsize
os.close(pagemap_fd)
try:
os.close(pagemap_fd)
except OSError:
return None

return ProcPagemap(total_vsize, total_present, total_swapped,
vma_internals, in_process_dup)
Expand Down
File renamed without changes.

0 comments on commit 17fd6c0

Please sign in to comment.