BCC - Tools for BPF-based Linux IO analysis, networking, monitoring, and more
This report summarizes scanner evidence for iovisor/bcc, a C project with 22,698 GitHub stars. SynthScan examined 169,602 lines of code across 863 source files, recording 977 pattern matches distributed across 17 syntactic categories. The legacy adjusted pattern signal is 8.4 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 486 finding(s).
Are imports declared and package/API names verified? 379 finding(s).
Are wrappers, guards, and repeated structures necessary? 178 finding(s).
Which changes need focused human review? 977 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 977 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/kvmexit.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/kvmexit.py | 21 | # | COMMENT |
| LOW | tools/wakeuptime.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/tcptop.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/tcpretrans.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/solisten.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/runqlen.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/runqlen.py | 61 | # struct load_weight load; | COMMENT |
| LOW | tools/cachestat.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/trace.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/funcslower.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/funcslower.py | 161 | u64 ip = PT_REGS_IP(ctx); | COMMENT |
| LOW | tools/vfscount.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/reset-trace.sh | 1 | #!/bin/bash | COMMENT |
| LOW | tools/drsnoop.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/bitesize.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/pidpersec.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/funclatency.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/tcpaccept.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/numasched.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/sofdsnoop.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/bpflist.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/deadlock.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/deadlock.py | 21 | # | COMMENT |
| LOW | tools/swapin.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/mptcpify.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/cpudist.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/biotop.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/dcstat.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/tcptracer.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/tcptracer.py | 41 | help="trace IPv6 family only") | COMMENT |
| LOW | tools/biosnoop.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/threadsnoop.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/virtiostat.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/rdmaucma.py | 1 | #!/usr/bin/python | COMMENT |
| LOW | tools/mysqld_qslower.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/vfsstat.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/ext4slower.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/profile.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/profile.py | 201 | u64 ip = PT_REGS_IP(&ctx->regs); | COMMENT |
| LOW | tools/offwaketime.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/ttysnoop.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/biolatency.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/criticalstat.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/softirqslower.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/mdflush.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/wqlat.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/f2fsslower.py | 1 | #!/usr/bin/python | COMMENT |
| LOW | tools/tcpconnect.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/zfsdist.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/tcpstates.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/capable.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/tcpcong.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/oomkill.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/statsnoop.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/runqslower.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/runqslower.py | 21 | # finish_task_switch() with either raw tracepoints (if supported) or kprobes | COMMENT |
| LOW | tools/shmsnoop.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/softirqs.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tools/filetop.py | 1 | #!/usr/bin/env python | COMMENT |
| 293 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/kvmexit.py | 31 | CODE | |
| LOW | tools/kvmexit.py | 37 | CODE | |
| LOW | tools/wakeuptime.py | 15 | CODE | |
| LOW | tools/tcptop.py | 28 | CODE | |
| LOW | tools/tcpretrans.py | 18 | CODE | |
| LOW | tools/solisten.py | 20 | CODE | |
| LOW | tools/runqlen.py | 22 | CODE | |
| LOW | tools/cachestat.py | 22 | CODE | |
| LOW | tools/cachestat.py | 27 | CODE | |
| LOW | tools/cachestat.py | 28 | CODE | |
| LOW | tools/trace.py | 14 | CODE | |
| LOW | tools/trace.py | 21 | CODE | |
| LOW | tools/funcslower.py | 24 | CODE | |
| LOW | tools/klockstat.py | 8 | CODE | |
| LOW | tools/klockstat.py | 9 | CODE | |
| LOW | tools/klockstat.py | 11 | CODE | |
| LOW | tools/klockstat.py | 13 | CODE | |
| LOW | tools/klockstat.py | 14 | CODE | |
| LOW | tools/klockstat.py | 14 | CODE | |
| LOW | tools/vfscount.py | 14 | CODE | |
| LOW | tools/drsnoop.py | 17 | CODE | |
| LOW | tools/funclatency.py | 26 | CODE | |
| LOW | tools/tcpaccept.py | 18 | CODE | |
| LOW | tools/numasched.py | 17 | CODE | |
| LOW | tools/numasched.py | 21 | CODE | |
| LOW | tools/numasched.py | 21 | CODE | |
| LOW | tools/numasched.py | 21 | CODE | |
| LOW | tools/numasched.py | 22 | CODE | |
| LOW | tools/numasched.py | 23 | CODE | |
| LOW | tools/sofdsnoop.py | 15 | CODE | |
| LOW | tools/bpflist.py | 15 | CODE | |
| LOW | tools/bpflist.py | 15 | CODE | |
| LOW | tools/bpflist.py | 19 | CODE | |
| LOW | tools/deadlock.py | 47 | CODE | |
| LOW | tools/deadlock.py | 47 | CODE | |
| LOW | tools/deadlock.py | 47 | CODE | |
| LOW | tools/deadlock.py | 47 | CODE | |
| LOW | tools/swapin.py | 18 | CODE | |
| LOW | tools/mptcpify.py | 17 | CODE | |
| LOW | tools/biopattern.py | 12 | CODE | |
| LOW | tools/cpudist.py | 19 | CODE | |
| LOW | tools/biotop.py | 19 | CODE | |
| LOW | tools/dcstat.py | 18 | CODE | |
| LOW | tools/nfsdist.py | 11 | CODE | |
| LOW | tools/tcptracer.py | 17 | CODE | |
| LOW | tools/biosnoop.py | 19 | CODE | |
| LOW | tools/threadsnoop.py | 15 | CODE | |
| LOW | tools/virtiostat.py | 14 | CODE | |
| LOW | tools/rdmaucma.py | 14 | CODE | |
| LOW | tools/rdmaucma.py | 19 | CODE | |
| LOW | tools/mysqld_qslower.py | 18 | CODE | |
| LOW | tools/vfsstat.py | 18 | CODE | |
| LOW | tools/vfsstat.py | 22 | CODE | |
| LOW | tools/ext4slower.py | 28 | CODE | |
| LOW | tools/profile.py | 31 | CODE | |
| LOW | tools/offwaketime.py | 15 | CODE | |
| LOW | tools/ttysnoop.py | 19 | CODE | |
| LOW | tools/biolatency.py | 16 | CODE | |
| LOW | tools/biolatency.py | 20 | CODE | |
| LOW | tools/criticalstat.py | 15 | CODE | |
| 269 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tools/mptcpify.py | 69 | if ((family == AF_INET || family == AF_INET6) && | CODE |
| HIGH⚡ | tools/mptcpify.py | 71 | (!protocol || protocol == IPPROTO_TCP) && | CODE |
| HIGH⚡ | tools/mptcpify.py | 72 | (mode && *mode == 0 || support_apps.lookup(&target))) | CODE |
| HIGH | tools/cpudist.py | 199 | if (ns_pid_val && ns_tgid_val) { | CODE |
| HIGH | tools/tcptracer.py | 140 | if (saddr == 0 || daddr == 0 || sport == 0 || dport == 0) { | CODE |
| HIGH | tools/tcptracer.py | 171 | if (saddr == 0 || daddr == 0 || sport == 0 || dport == 0) { | CODE |
| HIGH | tools/tcptracer.py | 293 | if (state != TCP_ESTABLISHED && state != TCP_CLOSE) { | CODE |
| HIGH | tools/tcptracer.py | 499 | if (evt4.saddr != 0 && evt4.daddr != 0 && | CODE |
| HIGH | tools/tcptracer.py | 500 | evt4.sport != 0 && evt4.dport != 0) { | CODE |
| HIGH | tools/tcptracer.py | 524 | if (evt6.saddr != 0 && evt6.daddr != 0 && | CODE |
| HIGH | tools/tcptracer.py | 525 | evt6.sport != 0 && evt6.dport != 0) { | CODE |
| HIGH | tools/criticalstat.py | 147 | if (stdp && stdp->active) { | CODE |
| HIGH | tools/tcpcong.py | 441 | 'if (lport < %d || lport > %d) { return 0; }' | STRING |
| HIGH | tools/tcpcong.py | 448 | 'if (dport < %d || dport > %d) { return 0; }' | STRING |
| HIGH | tools/runqslower.py | 92 | if (FILTER_PID || FILTER_TGID || pid == 0) | CODE |
| HIGH | tools/filetop.py | 119 | if (d_name.len == 0 || TYPE_FILTER) | CODE |
| HIGH | tools/tcplife.py | 165 | if (state == TCP_SYN_SENT || state == TCP_LAST_ACK) { | CODE |
| HIGH | tools/tcplife.py | 294 | if (args->newstate == TCP_SYN_SENT || args->newstate == TCP_LAST_ACK) { | CODE |
| HIGH | tools/inject.py | 175 | if (p->conds_met < 1 || p->conds_met >= %s) | CODE |
| HIGH | tools/inject.py | 227 | if (%s == 1 && %s && overridden < %s) { | CODE |
| HIGH | tools/inject.py | 242 | if (p->conds_met == %s && %s && overridden < %s) { | CODE |
| HIGH | tools/exitsnoop.py | 102 | if (FILTER_PID || FILTER_EXIT_CODE) { return 0; } | CODE |
| HIGH | tools/exitsnoop.py | 124 | filter_pid = "!(task->tgid == %s && task->pid == task->tgid)" % Global.args.pid | STRING |
| HIGH | tools/filegone.py | 89 | if (s_name.len == 0 || d_name.len == 0) | CODE |
| HIGH | tools/fileslower.py | 105 | if (de->d_name.len == 0 || TYPE_FILTER) | CODE |
| HIGH | tools/hardirqs.py | 180 | if (tsp == 0 || namep == 0) { | CODE |
| HIGH | tools/runqlat.py | 92 | if (FILTER || pid == 0) | CODE |
| HIGH | tools/runqlat.py | 160 | if (!(FILTER || pid == 0)) { | CODE |
| HIGH | tools/runqlat.py | 168 | if (FILTER || pid == 0) | CODE |
| HIGH | tools/runqlat.py | 214 | if (!(FILTER || pid == 0)) { | CODE |
| HIGH | tools/runqlat.py | 222 | if (FILTER || pid == 0) | CODE |
| HIGH | tools/memleak.py | 459 | size_filter = "if (size < %d || size > %d) return 0;" % \ | STRING |
| HIGH | tools/bindsnoop.py | 205 | if (ret != 0 && ignore_errors) { | CODE |
| HIGH | tools/opensnoop.py | 478 | if (filepart_length < 0 || filepart_length > NAME_MAX) | CODE |
| HIGH | tools/opensnoop.py | 484 | if (dentry == parent_dentry || dentry == mnt_root) { | CODE |
| HIGH | tools/old/filegone.py | 95 | if (s_name.len == 0 || d_name.len == 0) | CODE |
| HIGH | tools/old/hardirqs.py | 111 | if (tsp == 0 || descp == 0) { | CODE |
| HIGH | tools/old/memleak.py | 220 | size_filter = "if (size < %d || size > %d) return 0;" % \ | STRING |
| HIGH | tools/old/killsnoop.py | 63 | if (tpidp == 0 || sigp == 0) { | CODE |
| HIGH | tests/python/test_clang.py | 1320 | if (!disk || disk->major != 5 || disk->first_minor != 6) | CODE |
| HIGH | tests/python/test_queuestack.py | 24 | stack.push(ct.c_uint64(i)) | STRING |
| HIGH | tests/python/test_queuestack.py | 27 | stack.push(ct.c_uint(10)) | STRING |
| HIGH | tests/python/test_queuestack.py | 41 | stack.push(ct.c_uint64(i)) | STRING |
| HIGH | tests/python/test_queuestack.py | 57 | queue.push(ct.c_uint64(i)) | STRING |
| HIGH | tests/python/test_queuestack.py | 60 | queue.push(ct.c_uint(10)) | STRING |
| HIGH | tests/python/test_queuestack.py | 74 | queue.push(ct.c_uint64(i)) | STRING |
| HIGH | examples/tracing/nflatency.py | 108 | if (!s || s->ts == 0) { | CODE |
| HIGH | examples/tracing/dddos.py | 60 | if(rcv_packets_nb_ptr != 0 && rcv_packets_ts_ptr != 0){ | CODE |
| HIGH | examples/networking/vlan_learning/vlan_learning.py | 69 | "for i in {1..8}; do curl 172.16.1.5 -o /dev/null; sleep 1; done"] | CODE |
| HIGH | examples/networking/tunnel_monitor/main.py | 43 | self.processes.append(NSPopen(host[0].nl.netns, cmd, stdout=null)) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/tcpretrans.py | 392 | except BaseException: | CODE |
| HIGH | tools/vfscount.py | 55 | except KeyboardInterrupt: | CODE |
| HIGH | tools/ppchcalls.py | 242 | except ValueError: | CODE |
| HIGH | tools/tcpconnect.py | 549 | except KeyboardInterrupt: | CODE |
| HIGH | tools/execsnoop.py | 309 | except IOError: | CODE |
| HIGH | tools/execsnoop.py | 353 | except Exception: | CODE |
| HIGH | tools/syscount.py | 40 | except ValueError: | CODE |
| HIGH | tools/mountsnoop.py | 807 | except KeyError: | CODE |
| HIGH | tools/bindsnoop.py | 508 | except KeyboardInterrupt: | CODE |
| HIGH | tools/killsnoop.py | 183 | except: | CODE |
| HIGH | tools/lib/ustat.py | 306 | except KeyboardInterrupt: | CODE |
| HIGH | tools/lib/ustat.py | 75 | except Exception: | CODE |
| HIGH | tests/python/simulation.py | 120 | except: | CODE |
| HIGH | tests/python/test_clang.py | 372 | except: | CODE |
| HIGH | tests/python/test_map_in_map.py | 71 | except KeyError: | CODE |
| HIGH | tests/python/test_map_in_map.py | 81 | except KeyError: | CODE |
| HIGH | tests/python/test_map_in_map.py | 144 | except KeyError: | CODE |
| HIGH | tests/python/test_map_in_map.py | 154 | except KeyError: | CODE |
| HIGH | tests/python/test_histogram.py | 27 | except: pass | CODE |
| HIGH | tests/python/test_histogram.py | 33 | except: pass | CODE |
| HIGH | tests/python/test_histogram.py | 54 | except: pass | CODE |
| HIGH | tests/python/test_histogram.py | 56 | except: pass | CODE |
| HIGH | tests/python/test_stackid.py | 35 | except: pass | CODE |
| HIGH | tests/python/test_stackid.py | 74 | except: pass | CODE |
| HIGH | examples/local_storage/inode_storage.py | 27 | except KeyboardInterrupt: | CODE |
| HIGH | examples/local_storage/task_storage.py | 40 | except KeyboardInterrupt: | CODE |
| HIGH | examples/tracing/strlen_count.py | 51 | except KeyboardInterrupt: | CODE |
| HIGH | examples/tracing/strlen_hist_ifunc.py | 125 | except KeyboardInterrupt: | CODE |
| HIGH | examples/tracing/mallocstacks.py | 62 | except KeyboardInterrupt: | CODE |
| HIGH | examples/tracing/strlen_hist.py | 58 | except KeyboardInterrupt: | CODE |
| HIGH | examples/networking/simulation.py | 120 | except: | CODE |
| HIGH | examples/networking/tc_perf_event.py | 85 | except KeyboardInterrupt: | CODE |
| HIGH | examples/networking/vlan_learning/simulation.py | 120 | except: | CODE |
| HIGH | examples/networking/distributed_bridge/simulation.py | 120 | except: | CODE |
| HIGH | examples/networking/neighbor_sharing/simulation.py | 120 | except: | CODE |
| HIGH | examples/networking/tcp_mon_block/src/tcp_mon_block.py | 148 | except: | CODE |
| HIGH | examples/networking/tunnel_monitor/simulation.py | 120 | except: | CODE |
| HIGH | src/python/bcc/__init__.py | 1628 | except IOError: | CODE |
| HIGH | src/python/bcc/table.py | 397 | except KeyError: | CODE |
| HIGH | src/python/bcc/table.py | 404 | except KeyError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/nfsdist.py | 0 | examples: ./xfsdist # show operation latency as a histogram ./xfsdist -p 181 # trace pid 181 only ./xfsdist 1 10 # print | STRING |
| HIGH | tools/zfsdist.py | 0 | examples: ./xfsdist # show operation latency as a histogram ./xfsdist -p 181 # trace pid 181 only ./xfsdist 1 10 # print | STRING |
| HIGH | tools/ext4dist.py | 0 | examples: ./xfsdist # show operation latency as a histogram ./xfsdist -p 181 # trace pid 181 only ./xfsdist 1 10 # print | STRING |
| HIGH | tools/btrfsdist.py | 0 | examples: ./xfsdist # show operation latency as a histogram ./xfsdist -p 181 # trace pid 181 only ./xfsdist 1 10 # print | STRING |
| HIGH | tools/xfsdist.py | 0 | examples: ./xfsdist # show operation latency as a histogram ./xfsdist -p 181 # trace pid 181 only ./xfsdist 1 10 # print | STRING |
| HIGH | tools/nfsdist.py | 0 | #include <uapi/linux/ptrace.h> #include <linux/fs.h> #include <linux/sched.h> #define op_name_len 8 typedef struct dist_ | STRING |
| HIGH | tools/zfsdist.py | 0 | #include <uapi/linux/ptrace.h> #include <linux/fs.h> #include <linux/sched.h> #define op_name_len 8 typedef struct dist_ | STRING |
| HIGH | tools/xfsdist.py | 0 | #include <uapi/linux/ptrace.h> #include <linux/fs.h> #include <linux/sched.h> #define op_name_len 8 typedef struct dist_ | STRING |
| HIGH | tools/ext4slower.py | 0 | examples: ./zfsslower # trace operations slower than 10 ms (default) ./zfsslower 1 # trace operations slower than 1 ms . | STRING |
| HIGH | tools/f2fsslower.py | 0 | examples: ./zfsslower # trace operations slower than 10 ms (default) ./zfsslower 1 # trace operations slower than 1 ms . | STRING |
| HIGH | tools/xfsslower.py | 0 | examples: ./zfsslower # trace operations slower than 10 ms (default) ./zfsslower 1 # trace operations slower than 1 ms . | STRING |
| HIGH | tools/zfsslower.py | 0 | examples: ./zfsslower # trace operations slower than 10 ms (default) ./zfsslower 1 # trace operations slower than 1 ms . | STRING |
| HIGH | tests/python/simulation.py | 0 | helper class for controlling multiple namespaces. inherit from this class and setup your namespaces. | STRING |
| HIGH | examples/networking/simulation.py | 0 | helper class for controlling multiple namespaces. inherit from this class and setup your namespaces. | STRING |
| HIGH | examples/networking/vlan_learning/simulation.py | 0 | helper class for controlling multiple namespaces. inherit from this class and setup your namespaces. | STRING |
| HIGH | examples/networking/distributed_bridge/simulation.py | 0 | helper class for controlling multiple namespaces. inherit from this class and setup your namespaces. | STRING |
| HIGH | examples/networking/neighbor_sharing/simulation.py | 0 | helper class for controlling multiple namespaces. inherit from this class and setup your namespaces. | STRING |
| HIGH | examples/networking/tunnel_monitor/simulation.py | 0 | helper class for controlling multiple namespaces. inherit from this class and setup your namespaces. | STRING |
| HIGH | docs/reference_guide.md | 0 | int hello(void *ctx) { bpf_trace_printk("hello, world!\\n"); return 0; } | STRING |
| HIGH | docs/tutorial_bcc_python_developer.md | 0 | int hello(void *ctx) { bpf_trace_printk("hello, world!\\n"); return 0; } | STRING |
| HIGH | examples/tracing/trace_fields.py | 0 | int hello(void *ctx) { bpf_trace_printk("hello, world!\\n"); return 0; } | STRING |
| HIGH | examples/tracing/hello_fields.py | 0 | int hello(void *ctx) { bpf_trace_printk("hello, world!\\n"); return 0; } | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/kvmexit.py | 364 | except Exception as e: | STRING |
| MEDIUM | tools/funclatency.py | 80 | print("Error: " + error) | STRING |
| LOW | tools/deadlock.py | 507 | except Exception as e: | STRING |
| LOW | tools/deadlock.py | 518 | except Exception as e: | STRING |
| MEDIUM | tools/ppchcalls.py | 293 | print("Error: hcall '%s' not found. Exiting." % args.hcall) | CODE |
| LOW | tools/ppchcalls.py | 451 | except Exception: | STRING |
| MEDIUM | tools/ppchcalls.py | 239 | def handle_errno(errstr): | CODE |
| LOW | tools/threadsnoop.py | 59 | except Exception: | STRING |
| LOW | tools/profile.py | 333 | except Exception: | STRING |
| LOW | tools/criticalstat.py | 325 | except Exception: | STRING |
| MEDIUM | tools/criticalstat.py | 299 | def print_event(cpu, data, size): | CODE |
| MEDIUM | tools/tcpconnect.py | 353 | print("Error: you may not specify -d/--dns with -c/--count.") | STRING |
| MEDIUM | tools/tcpconnect.py | 486 | print("Error: The python packages dnslib and cachetools are required " | STRING |
| MEDIUM | tools/filetop.py | 186 | print(f'Error accessing directory {args.directory}: {e}') | STRING |
| LOW | tools/funccount.py | 309 | except Exception: | STRING |
| LOW | tools/llcstat.py | 98 | except Exception: | STRING |
| LOW | tools/exitsnoop.py | 215 | except Exception as e: | CODE |
| LOW | tools/execsnoop.py | 353 | except Exception: | STRING |
| LOW | tools/fileslower.py | 205 | except Exception: | STRING |
| LOW | tools/fileslower.py | 212 | except Exception: | STRING |
| MEDIUM | tools/syscount.py | 104 | print("Error: syscall '%s' not found. Exiting." % args.syscall) | CODE |
| LOW | tools/syscount.py | 265 | except Exception: | STRING |
| MEDIUM | tools/syscount.py | 37 | def handle_errno(errstr): | CODE |
| LOW | tools/biolatpcts.py | 125 | except Exception: | STRING |
| MEDIUM | tools/funcinterval.py | 70 | print("Error: " + error) | STRING |
| LOW | tools/memleak.py | 494 | except Exception: | STRING |
| LOW | tools/stackcount.py | 386 | except Exception: | STRING |
| LOW | tools/lib/ustat.py | 75 | except Exception: | CODE |
| LOW | tests/python/test_attach_perf_event.py | 60 | except Exception: | STRING |
| LOW | tests/python/test_attach_perf_event.py | 106 | except Exception: | STRING |
| LOW | tests/python/test_attach_perf_event.py | 151 | except Exception: | STRING |
| LOW | tests/python/test_clang.py | 869 | except Exception: | STRING |
| LOW | tests/python/test_bpf_log.py | 51 | except Exception: | STRING |
| LOW | tests/python/test_bpf_log.py | 61 | except Exception: | STRING |
| MEDIUM | examples/tracing/lbr.py | 132 | print('Error tracepoint or kretprobe is required') | STRING |
| MEDIUM | examples/tracing/lbr.py | 141 | print('Error binary path is invalid') | STRING |
| LOW | examples/networking/tcp_mon_block/src/web_server.py | 23 | except Exception as e: | CODE |
| MEDIUM | examples/networking/tcp_mon_block/src/web_server.py | 20 | def public_ip(): | CODE |
| LOW | .github/scripts/check_links.py | 30 | except Exception as e: | CODE |
| MEDIUM | src/python/bcc/__init__.py | 1831 | print("Error adding module to build sym cache"+str(e)) | CODE |
| LOW | src/python/bcc/__init__.py | 443 | except Exception as e: | CODE |
| LOW | src/python/bcc/__init__.py | 451 | except Exception as e: | CODE |
| LOW | src/python/bcc/__init__.py | 1598 | except Exception as e: | CODE |
| LOW | src/python/bcc/__init__.py | 1613 | except Exception as e: | CODE |
| LOW | src/python/bcc/__init__.py | 1830 | except Exception as e: | CODE |
| LOW | src/python/bcc/syscall.py | 467 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/kvmexit.py | 443 | def extract_pcpu_kvm_exit_reason_count(args): | STRING |
| LOW | tools/runqlen.py | 81 | def check_runnable_weight_field(): | STRING |
| LOW | tools/trace.py | 420 | def _generate_usdt_filter_read(self): | STRING |
| LOW | tools/deadlock.py | 139 | def strongly_connected_components(G): | CODE |
| LOW | tools/statsnoop.py | 171 | def try_attach_syscall_probes(syscall): | STRING |
| LOW | tools/cpuunclaimed.py | 123 | def check_runnable_weight_field(): | STRING |
| LOW | tools/argdist.py | 113 | def _generate_retprobe_prefix(self): | STRING |
| LOW | tools/argdist.py | 298 | def _generate_usdt_arg_assignment(self, i): | STRING |
| LOW | tools/argdist.py | 310 | def _generate_field_assignment(self, i): | STRING |
| LOW | tools/memleak.py | 562 | def print_outstanding_combined(): | STRING |
| LOW | tools/tplist.py | 66 | def print_usdt_argument_details(location): | CODE |
| LOW | tests/python/test_attach_perf_event.py | 17 | def test_attach_raw_event_powerpc(self): | CODE |
| LOW | tests/python/test_map_batch_ops.py | 64 | def test_lookup_and_delete_batch_all_keys(self): | CODE |
| LOW | tests/python/test_map_batch_ops.py | 76 | def test_lookup_batch_all_keys(self): | CODE |
| LOW | tests/python/test_map_batch_ops.py | 84 | def test_delete_batch_all_keys(self): | CODE |
| LOW | tests/python/test_map_batch_ops.py | 105 | def test_update_batch_all_keys(self): | CODE |
| LOW | tests/python/test_array.py | 76 | def test_perf_buffer_for_each_cpu(self): | STRING |
| LOW | tests/python/test_clang.py | 438 | def test_probe_simple_member_assign(self): | CODE |
| LOW | tests/python/test_clang.py | 451 | def test_probe_member_expr_deref(self): | CODE |
| LOW | tests/python/test_clang.py | 58 | def test_load_cgroup_sockopt_prog(self): | STRING |
| LOW | tests/python/test_clang.py | 272 | def test_consecutive_probe_read(self): | STRING |
| LOW | tests/python/test_clang.py | 307 | def test_nested_probe_read_deref(self): | STRING |
| LOW | tests/python/test_clang.py | 361 | def test_probe_unnamed_union_deref(self): | STRING |
| LOW | tests/python/test_clang.py | 492 | def test_probe_read_nested_deref(self): | STRING |
| LOW | tests/python/test_clang.py | 771 | def test_ext_ptr_maps_reverse(self): | STRING |
| LOW | tests/python/test_clang.py | 800 | def test_ext_ptr_maps_indirect(self): | STRING |
| LOW | tests/python/test_clang.py | 830 | def test_bpf_dins_pkt_rewrite(self): | STRING |
| LOW | tests/python/test_clang.py | 963 | def test_invalid_noninline_call(self): | STRING |
| LOW | tests/python/test_clang.py | 1041 | def test_probe_read_tracepoint_context(self): | STRING |
| LOW | tests/python/test_clang.py | 1051 | def test_probe_read_kprobe_ctx(self): | STRING |
| LOW | tests/python/test_clang.py | 1064 | def test_probe_read_ctx_array(self): | STRING |
| LOW | tests/python/test_clang.py | 1110 | def test_probe_read_multiple_return(self): | STRING |
| LOW | tests/python/test_clang.py | 1130 | def test_probe_read_return_expr(self): | STRING |
| LOW | tests/python/test_clang.py | 1145 | def test_probe_read_return_call(self): | STRING |
| LOW | tests/python/test_clang.py | 1159 | def test_no_probe_read_addrof(self): | STRING |
| LOW | tests/python/test_clang.py | 1264 | def test_arbitrary_increment_simple(self): | STRING |
| LOW | tests/python/test_map_in_map.py | 92 | def test_hash_table_custom_key(self): | STRING |
| LOW | tests/python/test_license.py | 75 | def test_gpl_compatible_macro(self): | STRING |
| LOW | tests/python/test_license.py | 79 | def test_proprietary_words_macro(self): | STRING |
| LOW | tests/python/test_license.py | 99 | def test_proprietary_fail_macro(self): | STRING |
| LOW | tests/python/test_license.py | 104 | def test_proprietary_cflags_fail(self): | STRING |
| LOW | tests/python/test_disassembler.py | 154 | def _assert_equal_ignore_fd_id(s1, s2): | CODE |
| LOW | tests/python/test_usdt_argument.py | 12 | def test_rip_relative_deref_ident(self): | CODE |
| LOW | examples/tracing/strlen_hist_ifunc.py | 46 | def get_indirect_function_sym(module, symname): | STRING |
| LOW | src/python/bcc/containers.py | 15 | def _cgroup_filter_func_writer(cgroupmap): | CODE |
| LOW | src/python/bcc/containers.py | 34 | def _mntns_filter_func_writer(mntnsmap): | STRING |
| LOW | src/python/bcc/__init__.py | 929 | def detach_kprobe_event_by_fn(self, ev_name, fn_name): | CODE |
| LOW | src/python/bcc/__init__.py | 1271 | def support_raw_tracepoint_in_module(): | CODE |
| LOW | src/python/bcc/__init__.py | 1390 | def get_user_functions_and_addresses(name, sym_re): | CODE |
| LOW | src/python/bcc/table.py | 453 | def _sanity_check_keys_values(self, keys=None, values=None): | CODE |
| LOW | src/python/bcc/table.py | 548 | def items_lookup_and_delete_batch(self): | CODE |
| LOW | src/python/bcc/table.py | 563 | def _items_lookup_and_optionally_delete_batch(self, delete=True): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/trace.py | 386 | CODE | |
| LOW | tools/deadlock.py | 139 | CODE | |
| LOW | tools/deadlock.py | 194 | CODE | |
| LOW | tools/deadlock.py | 389 | CODE | |
| LOW | tools/inject.py | 379 | CODE | |
| LOW | tools/inject.py | 464 | CODE | |
| LOW | tools/nfsslower.py | 384 | CODE | |
| LOW | tools/funccount.py | 37 | CODE | |
| LOW | tools/funccount.py | 89 | CODE | |
| LOW | tools/funccount.py | 118 | CODE | |
| LOW | tools/execsnoop.py | 303 | CODE | |
| LOW | tools/execsnoop.py | 314 | CODE | |
| LOW | tools/cachetop.py | 143 | CODE | |
| LOW | tools/dirtop.py | 144 | CODE | |
| LOW | tools/argdist.py | 514 | CODE | |
| LOW | tools/biolatpcts.py | 215 | CODE | |
| LOW | tools/mountsnoop.py | 683 | CODE | |
| LOW | tools/stackcount.py | 30 | CODE | |
| LOW | tools/stackcount.py | 315 | CODE | |
| LOW | tools/opensnoop.py | 562 | CODE | |
| LOW | tests/python/test_debuginfo.py | 12 | CODE | |
| LOW | examples/networking/http_filter/http-parse-complete.py | 38 | CODE | |
| LOW | examples/networking/distributed_bridge/tunnel_mesh.py | 41 | CODE | |
| LOW | examples/networking/tunnel_monitor/main.py | 29 | CODE | |
| LOW | src/python/bcc/disassembler.py | 234 | CODE | |
| LOW | src/python/bcc/disassembler.py | 355 | CODE | |
| LOW | src/python/bcc/__init__.py | 345 | CODE | |
| LOW | src/python/bcc/__init__.py | 603 | CODE | |
| LOW | src/python/bcc/__init__.py | 719 | CODE | |
| LOW | src/python/bcc/__init__.py | 1038 | CODE | |
| LOW | src/python/bcc/__init__.py | 1540 | CODE | |
| LOW | src/python/bcc/table.py | 273 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/python/bcc/table.py | 419 | Allocate keys and/or values arrays. Useful for in items_*_batch. Args: alloc_k (bool): True to allo | STRING |
| HIGH | src/python/bcc/table.py | 454 | Check if the given keys or values have the right type and size. Args: keys (ct.Array): keys array t | STRING |
| HIGH | src/python/bcc/table.py | 484 | Look up all the key-value pairs in the map. Args: None Yields: tuple: The tuple | STRING |
| HIGH | src/python/bcc/table.py | 498 | Delete the key-value pairs related to the keys given as parameters. Note that if no key are given, it is faster | STRING |
| HIGH | src/python/bcc/table.py | 549 | Look up and delete all the key-value pairs in the map. Args: None Yields: tuple | STRING |
| HIGH | src/python/bcc/table.py | 564 | Look up and optionally delete all the key-value pairs in the map. Args: delete (bool) : look up and | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/tcptop.py | 13 | # WARNING: This traces all send/receives at the TCP level, and while it | COMMENT |
| LOW | tools/funcslower.py | 10 | # WARNING: This tool traces function calls by instrumenting the entry and | COMMENT |
| LOW | tools/ext4slower.py | 13 | # WARNING: This adds low-overhead instrumentation to these ext4 operations, | COMMENT |
| LOW | tools/f2fsslower.py | 14 | # WARNING: This adds low-overhead instrumentation to these f2fs operations, | COMMENT |
| LOW | tools/nfsslower.py | 15 | # WARNING: This adds low-overhead instrumentation to these NFS operations, | COMMENT |
| LOW | tools/xfsslower.py | 13 | # WARNING: This adds low-overhead instrumentation to these XFS operations, | COMMENT |
| LOW | tools/fileslower.py | 20 | # WARNING: This traces VFS reads and writes, which can be extremely frequent, | COMMENT |
| LOW | tools/tcpsubnet.py | 14 | # WARNING: This traces all send at the TCP level, and while it | COMMENT |
| LOW | tools/btrfsslower.py | 13 | # WARNING: This adds low-overhead instrumentation to these btrfs operations, | COMMENT |
| LOW | tools/zfsslower.py | 13 | # WARNING: This adds low-overhead instrumentation to these ZFS operations, | COMMENT |
| LOW | tools/old/tcptop.py | 12 | # WARNING: This traces all send/receives at the TCP level, and while it | COMMENT |
| LOW⚡ | .github/prompts/review-pr.prompt.md | 5 | ## Step 1: Identify Changed File Categories | COMMENT |
| LOW⚡ | .github/prompts/review-pr.prompt.md | 13 | ## Step 2: General Checks (All PRs) | COMMENT |
| LOW⚡ | .github/prompts/review-pr.prompt.md | 19 | ## Step 3: Category-Specific Checks | COMMENT |
| LOW | .github/prompts/review-pr.prompt.md | 59 | ## Step 4: Output Format | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/runqlen.py | 82 | # Define the bpf program for checking purpose | STRING |
| MEDIUM | tools/tcpaccept.py | 97 | # The following code uses kprobes to instrument inet_csk_accept(). | STRING |
| MEDIUM | tools/tcptracer.py | 11 | # The following code should be replaced, and simplified, when static TCP probes | COMMENT |
| MEDIUM | tools/cpuunclaimed.py | 124 | # Define the bpf program for checking purpose | STRING |
| MEDIUM | tools/execsnoop.py | 108 | # Define the bpf program for checking purpose | STRING |
| MEDIUM | …les/networking/neighbor_sharing/tc_neighbor_sharing.py | 29 | # Create the wan namespace, and attach an ingress filter for throttling | COMMENT |
| MEDIUM | src/python/bcc/table.py | 667 | # The above code assumes that self.Key._fields_[1][0] holds the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/python/simulation.py | 23 | CODE | |
| LOW | tests/python/simulation.py | 105 | CODE | |
| LOW | examples/networking/simulation.py | 23 | CODE | |
| LOW | examples/networking/simulation.py | 105 | CODE | |
| LOW | examples/networking/vlan_learning/simulation.py | 23 | CODE | |
| LOW | examples/networking/vlan_learning/simulation.py | 105 | CODE | |
| LOW | examples/networking/distributed_bridge/simulation.py | 23 | CODE | |
| LOW | examples/networking/distributed_bridge/simulation.py | 105 | CODE | |
| LOW | examples/networking/neighbor_sharing/simulation.py | 23 | CODE | |
| LOW | examples/networking/neighbor_sharing/simulation.py | 105 | CODE | |
| LOW | examples/networking/tunnel_monitor/simulation.py | 23 | CODE | |
| LOW | examples/networking/tunnel_monitor/simulation.py | 105 | CODE | |
| LOW | src/python/bcc/__init__.py | 411 | CODE | |
| LOW | src/python/bcc/__init__.py | 1323 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/exitsnoop.py | 182 | # ============================= | COMMENT |
| MEDIUM | tools/exitsnoop.py | 184 | # ============================= | COMMENT |
| MEDIUM | tools/exitsnoop.py | 245 | # ============================= | COMMENT |
| MEDIUM | tools/exitsnoop.py | 247 | # ============================= | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/killsnoop.py | 184 | pass # not fatal error, just use the default value | STRING |
| MEDIUM | examples/tracing/stack_buildid_example.py | 77 | # libc.so and ping are added here so that any symbols pertaining to | STRING |
| LOW | examples/networking/vlan_filter/data-plane-tracing.py | 94 | #get interface ip address. In case ip is not set then just add 127.0.0.1. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/bcc-test.yml | 241 | # To debug weird issues, you can add this step to be able to SSH to the test environment | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/kvmexit.py | 359 | # Check if kvm module is loaded | STRING |
| LOW | scripts/docker/auth.sh | 15 | # Set this to match the name of the bot user on quay.io | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/networking/tcp_mon_block/src/tcp_mon_block.py | 9 | # Usage: | COMMENT |