python: Filter duplicate in get_kprobe_functions
authorSasha Goldshtein <goldshtn@gmail.com>
Thu, 20 Oct 2016 23:18:07 +0000 (16:18 -0700)
committerSasha Goldshtein <goldshtn@gmail.com>
Thu, 20 Oct 2016 23:18:07 +0000 (16:18 -0700)
`BPF.get_kprobe_functions` does not filter duplicates, and
as a result may return the same function name more than
once if it appears in /sys/kernel/debug/tracing/available_filter_functions
more than once. Change the function's behavior to filter
out duplicates before returning, so we don't end up
attaching the same kprobe more than once.

src/python/bcc/__init__.py

index 82518f1..dc62c98 100644 (file)
@@ -422,7 +422,7 @@ class BPF(object):
                 fn = line.rstrip().split()[0]
                 if re.match(event_re, fn) and fn not in blacklist:
                     fns.append(fn)
-        return fns
+        return set(fns)     # Some functions may appear more than once
 
     def _check_probe_quota(self, num_new_probes):
         global _num_open_probes