bpftrace 段错误 bpf_prog_load_deprecated

article/2025/9/19 22:29:19

调试

(gdb)
672       return bpf_prog_load(load_attr->prog_type, load_attr->name, load_attr->license,
(gdb) p load_attr->prog_type
$5 = BPF_PROG_TYPE_TRACING
(gdb) s
bpf_prog_load_deprecated (file=0x1a <error: Cannot access memory at address 0x1a>, type=4294942496, pobj=0x75e898, prog_fd=0x7fffffffb340) at libbpf.c:10153
10153           memset(&attr, 0, sizeof(struct bpf_prog_load_attr));

如何解决

方法1:Fix bpf_prog_load() pointing error causing libbcc segfault by Rtoax · Pull Request #503 · libbpf/libbpf · GitHubbpftrace SEGV fault:(gdb) bt#0 0x00007ffff00eee7d in __strlen_avx2 () from /lib64/libc.so.6#1 0x00007ffff0095278 in __vfprintf_internal () from /lib64/libc.so.6#2 0x00007ffff0095a3f in buffered_vfprintf () from /lib64/libc.so.6#3 0x00007ffff7f68c10 in libbpf_print (level=level@entry=LIBBPF_DEBUG, format=format@entry=0x7ffff7f9452e "libbpf: loading %s\n") at libbpf.c:103#4 0x00007ffff7f75e82 in __bpf_object__open_xattr (attr=attr@entry=0x7fffffffaf40, flags=0) at libbpf.c:7435#5 0x00007ffff7f7d917 in bpf_prog_load_xattr2 (attr=attr@entry=0x7fffffffaf90, pobj=0x5555557a310b, prog_fd=0x7fffffffc590) at libbpf.c:10093#6 0x00007ffff7f7dad3 in bpf_prog_load_deprecated (file=, type=, pobj=, prog_fd=) at libbpf.c:10158#7 0x00007ffff1025c78 in libbpf_bpf_prog_load (load_attr=0x7fffffffb210, log_buf=0x0, log_buf_sz=0) at /home/rongtao/Git/bcc/src/cc/libbpf.c:672#8 0x00007ffff10260af in bcc_prog_load_xattr (attr=0x7fffffffb210, prog_len=16, log_buf=0x7fffffffb540 "", log_buf_size=4096, allow_rlimit=true) at /home/rongtao/Git/bcc/src/cc/libbpf.c:758#9 0x00007ffff10264c7 in bcc_prog_load (prog_type=BPF_PROG_TYPE_TRACING, name=0x5555557a30a9 "kfunc__sched_fork", insns=0x7fffffffc590, prog_len=16, license=0x5555557a310b "GPL", kern_version=331533, log_level=0, log_buf=0x7fffffffb540 "", log_buf_size=4096) at /home/rongtao/Git/bcc/src/cc/libbpf.c:880#10 0x00005555556cd65c in bpftrace::try_load(char const*, libbpf::bpf_prog_type, bpf_insn*, unsigned long, int, char*, unsigned long) [clone .constprop.0] ( name=name@entry=0x5555557a30a9 "kfunc__sched_fork", prog_type=prog_type@entry=libbpf::BPF_PROG_TYPE_TRACING, insns=insns@entry=0x7fffffffc590, insns_cnt=insns_cnt@entry=2, loglevel=loglevel@entry=0, logbuf=logbuf@entry=0x7fffffffb540 "", logbuf_size=4096) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/bpffeature.cpp:45#11 0x0000555555621341 in bpftrace::try_load (prog_type=, insns=0x7fffffffc590, len=2, name=) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/bpffeature.cpp:87#12 0x0000555555621505 in bpftrace::BPFfeature::detect_prog_type (this=0x555555a17a10, name=0x0, prog_type=libbpf::BPF_PROG_TYPE_TRACING) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/bpffeature.cpp:141#13 bpftrace::BPFfeature::has_prog_kfunc (this=0x555555a17a10) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/bpffeature.h:102#14 0x00005555556ad121 in bpftrace::ast::SemanticAnalyser::visit (this=0x7fffffffdd50, ap=...) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/ast/semantic_analyser.cpp:2552#15 0x00005555556a8ee3 in bpftrace::ast::AttachPoint::accept (v=..., this=0x555555a20f90) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/ast/ast.cpp:36#16 bpftrace::ast::SemanticAnalyser::visit (this=0x7fffffffdd50, probe=...) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/ast/semantic_analyser.cpp:2625#17 0x00005555556a4144 in bpftrace::ast::Probe::accept (v=..., this=) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/ast/ast.cpp:41#18 bpftrace::ast::SemanticAnalyser::visit (this=0x7fffffffdd50, program=...) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/ast/semantic_analyser.cpp:2642#19 0x00005555556a427b in bpftrace::ast::SemanticAnalyser::analyse (this=0x7fffffffdd50) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/ast/semantic_analyser.cpp:2653#20 0x00005555555e40d6 in main (argc=2, argv=0x7fffffffe678) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/main.cpp:532In 'libbpf_bpf_prog_load()' call 'bpf_prog_load()' with 6 args, shouldn't call 'bpf_prog_load_deprecated()' with 4 args. but was called.See also iovisor/bcc#4021https://github.com/libbpf/libbpf/pull/503

方法2:

Fix bpftrace segfault caused by libbcc bug. by Rtoax · Pull Request #4021 · iovisor/bcc · GitHubbpftrace libbcc SEGV fault:$ sudo gdb bpftrace[...](gdb) set args -l(gdb) rProgram received signal SIGSEGV, Segmentation fault.0x00007ffff00eee7d in __strlen_avx2 () from /lib64/libc.so.6(gdb) bt#0 0x00007ffff00eee7d in __strlen_avx2 () from /lib64/libc.so.6#1 0x00007ffff0095278 in __vfprintf_internal () from /lib64/libc.so.6#2 0x00007ffff0095a3f in buffered_vfprintf () from /lib64/libc.so.6#3 0x00007ffff7f68c10 in libbpf_print (level=level@entry=LIBBPF_DEBUG, format=format@entry=0x7ffff7f9452e "libbpf: loading %s\n") at libbpf.c:103#4 0x00007ffff7f75e82 in __bpf_object__open_xattr (attr=attr@entry=0x7fffffffaf40, flags=0) at libbpf.c:7435#5 0x00007ffff7f7d917 in bpf_prog_load_xattr2 (attr=attr@entry=0x7fffffffaf90, pobj=0x5555557a310b, prog_fd=0x7fffffffc590) at libbpf.c:10093#6 0x00007ffff7f7dad3 in bpf_prog_load_deprecated (file=, type=, pobj=, prog_fd=) at libbpf.c:10158#7 0x00007ffff1025c78 in libbpf_bpf_prog_load (load_attr=0x7fffffffb210, log_buf=0x0, log_buf_sz=0) at /home/rongtao/Git/bcc/src/cc/libbpf.c:672#8 0x00007ffff10260af in bcc_prog_load_xattr (attr=0x7fffffffb210, prog_len=16, log_buf=0x7fffffffb540 "", log_buf_size=4096, allow_rlimit=true) at /home/rongtao/Git/bcc/src/cc/libbpf.c:758#9 0x00007ffff10264c7 in bcc_prog_load (prog_type=BPF_PROG_TYPE_TRACING, name=0x5555557a30a9 "kfunc__sched_fork", insns=0x7fffffffc590, prog_len=16, license=0x5555557a310b "GPL", kern_version=331533, log_level=0, log_buf=0x7fffffffb540 "", log_buf_size=4096) at /home/rongtao/Git/bcc/src/cc/libbpf.c:880#10 0x00005555556cd65c in bpftrace::try_load(char const*, libbpf::bpf_prog_type, bpf_insn*, unsigned long, int, char*, unsigned long) [clone .constprop.0] ( name=name@entry=0x5555557a30a9 "kfunc__sched_fork", prog_type=prog_type@entry=libbpf::BPF_PROG_TYPE_TRACING, insns=insns@entry=0x7fffffffc590, insns_cnt=insns_cnt@entry=2, loglevel=loglevel@entry=0, logbuf=logbuf@entry=0x7fffffffb540 "", logbuf_size=4096) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/bpffeature.cpp:45#11 0x0000555555621341 in bpftrace::try_load (prog_type=, insns=0x7fffffffc590, len=2, name=) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/bpffeature.cpp:87#12 0x0000555555621505 in bpftrace::BPFfeature::detect_prog_type (this=0x555555a17a10, name=0x0, prog_type=libbpf::BPF_PROG_TYPE_TRACING) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/bpffeature.cpp:141#13 bpftrace::BPFfeature::has_prog_kfunc (this=0x555555a17a10) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/bpffeature.h:102#14 0x00005555556ad121 in bpftrace::ast::SemanticAnalyser::visit (this=0x7fffffffdd50, ap=...) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/ast/semantic_analyser.cpp:2552#15 0x00005555556a8ee3 in bpftrace::ast::AttachPoint::accept (v=..., this=0x555555a20f90) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/ast/ast.cpp:36#16 bpftrace::ast::SemanticAnalyser::visit (this=0x7fffffffdd50, probe=...) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/ast/semantic_analyser.cpp:2625#17 0x00005555556a4144 in bpftrace::ast::Probe::accept (v=..., this=) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/ast/ast.cpp:41#18 bpftrace::ast::SemanticAnalyser::visit (this=0x7fffffffdd50, program=...) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/ast/semantic_analyser.cpp:2642#19 0x00005555556a427b in bpftrace::ast::SemanticAnalyser::analyse (this=0x7fffffffdd50) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/ast/semantic_analyser.cpp:2653#20 0x00005555555e40d6 in main (argc=2, argv=0x7fffffffe678) at /usr/src/debug/bpftrace-0.12.1-8.el9.x86_64/src/main.cpp:532In 'libbpf_bpf_prog_load()' call 'bpf_prog_load()' with 6 args, shouldn't call 'bpf_prog_load_deprecated()' with 4 args. but was called, It may be caused by a libbpf bug, which can be circumvented in this way.Fix it in libbpf/libbpf#503https://github.com/iovisor/bcc/pull/4021


http://chatgpt.dhexx.cn/article/ihasJgmm.shtml

相关文章

BPF介绍

Thank Zhihao Tao for your hard work. The document spent countless nights and weekends, using his hard work to make it convenient for everyone. If you have any questions, please send a email to zhihao.taooutlook.com 文章目录 1. 概述1.1 发展1.2 优势1.3 限制1…

BPF-JIT中bug归类

文章目录 前言BPF-JITs中的bugs分类Subtle architectural semantics(微妙的架构语义)Subtle machine state(微妙的机器状态)Subtle instruction encoding(微妙的指令编码) Bug-fixing commits in BPF JITs in the Linux kernel (May 2014–April 2020)其他 前言 本篇内容来自&…

bpf的加载流程分析

文章目录 前言elf结构简介load_bpf_file函数准备工作创建map处理所有的重定向section加载ebpf程序 参考 前言 我们知道&#xff0c;使用clang/llvm编译生成的target为bpf的elf文件&#xff0c;使用load_bpf_file函数加载进入内核。 所以&#xff0c;这里&#xff0c;我们需要…

深入理解 BPF map 实现机制

揭秘 BPF map 前生今世 目录 揭秘 BPF map 前生今世1. 前言2. 简单的使用样例用户空间与内核 BPF 辅助函数参数对比 3. 深入指令分析3.1 查看 BPF 指令3.2 加载器创建 map 对象3.3 第一次变身&#xff1a; map fd 替换3.4 第二次变身&#xff1a; map fd 替换成 map 结构指针 4…

bpf简介1

文章目录 前言prefaceIntroduction历史发展结构 推荐阅读 前言 来源&#xff1a;Linux Observability with BPF 这里整理下该书第一章&#xff1a;preface && Introduction 这本书有中文版的《Linux内核观测技术BPF》。这个链接里面的资料也是很好的&#xff0c;可以…

BPF技术学习分享

什么是BPF程序&#xff1a; BPF is a highly flexible and efficient virtual machine-like construct in the Linux kernel allowing to execute bytecode at various hook points in a safe manner. BPF程序 ----LLVMClang----> BPF字节码 ----JIT----> BPF指令集&…

BPF之事件源

基础 1. BPF和eBPF概念 BPF 原是 Berkeley Packet Filter&#xff08;伯克利数据包过滤器&#xff09;的缩写&#xff0c;1992诞生&#xff0c;用于网络包过滤。2014经过修改并入 Linux 内核主线&#xff0c;从此 BPF 变成了一个更通用的执行引擎&#xff0c;主要用于网络、可…

DPDK BPF

DPDK BPF DPDK 自版本 18.05 已集成了 librte_bpf, 主要利用rte_eth_rx_burst/rte_eth_tx_burst 回调函数机制, 执行eBPF字节码. 当前支持以下特性: base eBPF ISA (except tail-pointer)JIT (x86_64 and arm64 only)eBPF code verifieruser-defined helper functions (64-bi…

Linux超能力BPF技术介绍及学习分享

近两年BPF技术跃然成为了一项热门技术&#xff0c;在刚刚结束的KubeCon 2020 Europe会议上有7个关于BPF的技术分享&#xff0c; 而在KubeCon 2020 China会议上也已有了3个关于BPF技术的中文分享&#xff0c;分别来自腾讯和PingCAP&#xff0c;涉足网络优化和系统追踪等领域。在…

bpf原理与入门

一、bpf架构 如上图所示,bpf由六部分构成,以下为其在bpf中的作用: bpf工具:该部分涉及bpf用户态程序、bpf的编译工具,通过bpf编译工具如Clang、LLVM将bpf用户态程序编译成bpf字节码; 加载器:可以简单理解为bpf系统调用,将bpf字节码加载到内核; 验证器:对bpf程序的…

BPF入门1:BPF技术简介

目录 cbpf 介绍ebpf 介绍ebpf 和 cbpf对比ebpf和内核模块的对比 ebpf应用ebpf架构Why BPF is FAST指令虚拟机JIT How BPF extends KernelLLVM 编写ebpf程序BCCBPFTraceC 语言原生方式 国内大厂使用ebpf的实践经验参考 cbpf 介绍 BPF&#xff08;Berkeley Packet Filter &#…

增广拉格朗日函数

对于优化问题 arg ⁡ min ⁡ z E ( z ) ( 1 a ) s . t . C z − b 0 ( 1 b ) \mathop{\arg\min}_{z} \ E(z)\qquad(1a)\\ s.t. \quad Cz-b0 \qquad(1b) argminz​ E(z)(1a)s.t.Cz−b0(1b) 其增广拉格朗日函数被定义为&#xff1a; L ( z , α , μ ) E ( z ) α T ( C z −…

约束优化:PHR-ALM 增广拉格朗日函数法

文章目录 约束优化&#xff1a;PHR-ALM 增广拉格朗日函数法等式约束非凸优化问题的PHR-ALM不等式约束非凸优化问题的PHR-ALM对于一般非凸优化问题的PHR-ALM参考文献 约束优化&#xff1a;PHR-ALM 增广拉格朗日函数法 基础预备&#xff1a; 约束优化&#xff1a;约束优化的三种…

matlab编写拉格朗日插值代码函数

要求&#xff1a;根据拉格朗日多项式插值法原理&#xff0c;设计算法流程并且编写拉格朗日插值代码函数。 代码如下&#xff1a; function[y]lagrange(x0,y0,x) %建立一个函数名为lagrange的函数&#xff0c;输入x0,y0为插值点的坐标&#xff0c;均为数组&#xff0c;x为要…

拉格朗日函数最优化问题

目的&#xff1a;将有约束条件的函数最优化问题通过拉格朗日函数转化为无条件的函数最优化问题。 条件极值最优化问题&#xff1a; 对于无条件的函数最优化问题&#xff0c;常用的有3种方式&#xff1a; 梯度下降&#xff1a;求解一阶导数&#xff0c;其实就是使用泰勒一阶展…

【深度学习】拉格朗日( Lagrange)中值定理

文章目录 1、定理2、几何意义3、证明思路4、有限增量定理5、推论1、定理 如果函数 f(x) 满足: 在闭区间[a,b]上连续; 在开区间(a,b)内可导。 那么在(a,b)内至少有一点ξ(a<ξ<b),使等式 : f(b)-f(a)=f′(ξ)(b-a) 成立,或: f′(ξ) =(f(b)-f(a)) / (b-a) 或存…

拉格朗日(lagrange)插值及其MATLAB程序

一、n次拉格朗日插值 根据《插值多项式的性质》中的定理6.1可得 其中&#xff08;6.19&#xff09;称为基函数&#xff0c;&#xff08;6.18&#xff09;称为拉格朗日多项式&#xff0c;用&#xff08;6.18&#xff09;计算插值称为拉格朗日多项式插值。 方法2&#xff1a;通过…

拉格朗日函数优化

等式约束最优化 可以写为&#xff1a; 引入拉格朗日乘子&#xff08;&#xff09;把问题转换成拉格朗日函数 因为对于任何可行解&#xff0c;有&#xff0c;所以有 &#xff0c;也就是&#xff0c;。 求解。对分别求的偏导数为零&#xff0c;得到方程组求解极值点&#xff0c…

增广拉格朗日函数法

增广拉格朗日函数法 在二次罚函数法中&#xff0c;为了保证可行性&#xff0c;罚因子必须趋于正无穷。此时&#xff0c;子问题因条件数爆炸而难以求解。那么&#xff0c;是否可以通过对二次罚函数进行某种修正&#xff0c;使得对有限的罚因子&#xff0c;得到的毕竟最优解也是…

增广拉格朗日函数法(ALM)

增广拉格朗日函数法&#xff08; Augmented Lagrangian method&#xff09; 一、等式约束 考虑问题&#xff1a; min ⁡ x f ( x ) s . t . c i ( x ) 0 , i 1 , ⋯ , m . \begin{array}{ll} \min_x &f(x)\\ s.t. &c_i(x) 0, \quad i1,\cdots,m. \end{array} min…