@@ -104,10 +104,12 @@ def MountSharedData(self):
104
104
sys .exit (1 )
105
105
maps_file = open (maps_name , "r" )
106
106
try :
107
- m = re .search (r"/dev/shm/\S*" , maps_file .read ())
108
- if m is not None and os .path .exists (m .group (0 )):
109
- self .data_name = m .group (0 )
110
- else :
107
+ self .data_name = None
108
+ for m in re .finditer (r"/dev/shm/\S*" , maps_file .read ()):
109
+ if os .path .exists (m .group (0 )):
110
+ self .data_name = m .group (0 )
111
+ break
112
+ if self .data_name is None :
111
113
print "Can't find counter file in maps for PID %s." % self .data_name
112
114
sys .exit (1 )
113
115
finally :
@@ -414,7 +416,8 @@ class ChromeCounterCollection(object):
414
416
individual counters contained in the file."""
415
417
416
418
_HEADER_SIZE = 4 * 4
417
- _NAME_SIZE = 32
419
+ _COUNTER_NAME_SIZE = 64
420
+ _THREAD_NAME_SIZE = 32
418
421
419
422
def __init__ (self , data ):
420
423
"""Create a new instance.
@@ -426,22 +429,23 @@ def __init__(self, data):
426
429
self .max_counters = data .IntAt (8 )
427
430
self .max_threads = data .IntAt (12 )
428
431
self .counter_names_offset = \
429
- self ._HEADER_SIZE + self .max_threads * (self ._NAME_SIZE + 2 * 4 )
432
+ self ._HEADER_SIZE + self .max_threads * (self ._THREAD_NAME_SIZE + 2 * 4 )
430
433
self .counter_values_offset = \
431
- self .counter_names_offset + self .max_counters * self ._NAME_SIZE
434
+ self .counter_names_offset + self .max_counters * self ._COUNTER_NAME_SIZE
432
435
433
436
def CountersInUse (self ):
434
437
"""Return the number of counters in active use."""
435
438
for i in xrange (self .max_counters ):
436
- if self .data .ByteAt (self .counter_names_offset + i * self ._NAME_SIZE ) == 0 :
439
+ name_offset = self .counter_names_offset + i * self ._COUNTER_NAME_SIZE
440
+ if self .data .ByteAt (name_offset ) == 0 :
437
441
return i
438
442
return self .max_counters
439
443
440
444
def Counter (self , i ):
441
445
"""Return the i'th counter."""
442
- return ChromeCounter ( self .data ,
443
- self .counter_names_offset + i * self ._NAME_SIZE ,
444
- self .counter_values_offset + i * self . max_threads * 4 )
446
+ name_offset = self .counter_names_offset + i * self . _COUNTER_NAME_SIZE
447
+ value_offset = self .counter_values_offset + i * self .max_threads * 4
448
+ return ChromeCounter ( self .data , name_offset , value_offset )
445
449
446
450
447
451
def Main (data_file , name_filter ):
0 commit comments