Python: fix detach_kprobe()
authorDr.Z <korea.drzix@gmail.com>
Fri, 23 Oct 2015 09:59:10 +0000 (18:59 +0900)
committerDr.Z <korea.drzix@gmail.com>
Fri, 23 Oct 2015 10:27:48 +0000 (19:27 +0900)
As open_kprobes contains not fd but pointer to struct perf_reader,
it should call lib.perf_reader_free() instead of os.close()

src/python/bcc/__init__.py

index 001610d..f7a1973 100644 (file)
@@ -575,7 +575,7 @@ class BPF(object):
         ev_name = "p_" + event.replace("+", "_").replace(".", "_")
         if ev_name not in open_kprobes:
             raise Exception("Kprobe %s is not attached" % event)
-        os.close(open_kprobes[ev_name])
+        lib.perf_reader_free(open_kprobes[ev_name])
         desc = "-:kprobes/%s" % ev_name
         res = lib.bpf_detach_kprobe(desc.encode("ascii"))
         if res < 0:
@@ -612,7 +612,7 @@ class BPF(object):
         ev_name = "r_" + event.replace("+", "_").replace(".", "_")
         if ev_name not in open_kprobes:
             raise Exception("Kretprobe %s is not attached" % event)
-        os.close(open_kprobes[ev_name])
+        lib.perf_reader_free(open_kprobes[ev_name])
         desc = "-:kprobes/%s" % ev_name
         res = lib.bpf_detach_kprobe(desc.encode("ascii"))
         if res < 0: