TGINSIGHT CHAT
Welcome to the Black Parade
@TheB1ackParade
MusicDeath has many faces, I look forward to seeing this one.
Recent posts
Page 48 of 76 · 907 posts
Posted Aug 22
散步时一些不成熟的奇思妙想: 1. 重新实现 uretprobe 。这是看 Asphaltt 推荐的材料时想到的,散步时不断细化各种细节。核心是使其不再修改栈,从而可以直接运用在 go 上。对普通进程也有好处,那就是栈回溯的第一层不会混乱。 2. 重新实现 uprobe。核心是不再依赖 0xcc 。我推测使用 0xcc 是 ptrace 时代的后遗症,毕竟 uprobe 是在 08 年就开始讨论的功能,受 gdb 影响很大,再加上当时没有 ebpf ,uprobe 的接口是注入 printk 之类的。 3. 可编程化的 ftrace。先考虑笨办法,kmulti attach vmlinux 模块下的函数,在我 6.2 的内核上有 47171 个,虽然很多,但也不至于不可行。 4. tc-bpf / xdp-bpf 的反汇编(by Asphaltt again)。能有多难,不就围绕 skb / xmd 花式取字段、赋值,构造结构体,call helper。但是这太体力活了,光想想就。但我怀疑 IDA 可以直接导出来,可恶,太贵了!
Posted Aug 21
https://maskray.me/blog/2020-11-08-stack-unwinding 我爱宋教授
Posted Aug 21
↓这篇文章很多年前就有朋友发给过我,今天又读了一遍,有两个细节很有趣: 1. 判断一个地址是否在栈上,竟然通过一次 syscall 去判断。当然这对 BPF 不能用。 2. Alex Dowad 给 musl libc 贡献的生成 CFI 的 awk,去看了一下,原来只是维护 sp 和 cfa 的距离,那还是相对容易,但对栈回溯也足够了。这其实很有趣,我其实在自己的一个小工具上就试图做在相似的事情。 作者最后结论是高性能栈回溯有三种思路:compact、硬件、bp-based。 稍作计算,如果能做前处理的话,struct task 又能找到 maps,以百万级 entry 来衡量的话,CFI-based bt 大概比 bp-based bt 慢 log2(1e6)=20 倍以上,确实令人担忧。 此外“前处理”的要求也很高,比如在容器化环境下不能提前拿到 ELF。而“后处理”对动态链接的 go ELF 又不能用,因为包含了动态栈和系统栈两部分。 但还是有一些新的思路,应该可以做一个更“通用” 的 BPF 回溯工具。
Posted Aug 21
糊出来了一个 bpf-helper-tracer,也算是基本达到自己的预期,希望以后可以通过观测的方式去调查一些 bpf 程序的 bug,而不是反复读代码、在大脑中推演程序运行,这太唯心主义了! 虽然目前还只能支持 tc-bpf,但是用法是这样的: ./bpf-helpers-tracer --prog-id 822 'tcp[tcpflags] = tcp-syn' - 指定 bpf 程序的 id - 指定 pcap-filter 规则 输出的每一行是满足规则的 skb 命中的 bpf helper、参数、调用 helper 的 bpf prog 名字和偏移、源码,如 ffff9b3804302ee8 bpf_prog_f6ce4980046b654c_tail_ipv4_ct_egress+410 bpf_skb_load_bytes(skb=0xffff9b3804302ee8, offset=34, to=18446647214680849296, len=4, __ur_1=18446633268455445784) // ret = ctx_load_bytes(ctx, l4_off, ports, 4); 这样不仅可以间接得知 tailcall 的情况,还能更细粒度观测程序分支走向,和 bpf map 里的 kv,可以用来排查控制平面的 bug. 目前最不直观的还是 map kv 的输出,是固定长度的 hex,其实就算是后处理也能解析出 map name 和具体的结构体字段,但我实在太懒了。 还有就是返回值,不能加 kretprobe 因为会复写 *(cfa-8)。 还有就是现在纯粹是糊上去的,实现和代码结构都不行,前后处理的性能都很差。 还有一些多核上的并行的 bug。。。
Posted Aug 20
今天要赞美的是游戏 wiki,又一个对我帮助太大、却习以为常忘了这背后有人倾注了大量时间精力去无偿帮助别人的东西。 比如我在玩 F 社的漫威暗夜之子,搞不懂里面死侍的 buff 叠加机制,我连谷歌都不用,直接去 fandom.com ,果然有这游戏的 wiki,其死侍页面图文并茂非常详细。如果点开看编辑历史,能看到一个 wiki 页面基本先是一个 人完成主体部分,后面再有一些其他网友补充上遗漏的细节。我愿称他们为伟人。 fandom 上的内容使用 CC BY-SA license: “agree to grant broad permissions to the general public to re-distribute and re-use their contributions freely for any purpose, including commercial use”, 有一种 MIT License 的既视感( 我也怀疑过在 fandom 写 wiki 是有利可图的,比如广告收入,但是 quora 的这个问题说并没有,都是用爱发电。我再说一次,伟人。 游戏 wiki 这种东西在中文互联网其实也有,但是少、小众、没有流量。比如,百度搜 “神界原罪2 元素箭”,首页全是游侠网,搜狐,b站,小红书,贴吧;如果用谷歌搜 "dos2 elemental arrowheads",则第一项就是 wiki。 然而是有神界原罪2的中文 wiki 的,比如在 https://www.gmwiki.com/ ,但是百度根本不引流。 正如上面这个中文游戏维基首页所说: > 图文攻略都死绝了吗!!全是视频!!,算了干脆自己建个wiki. > 不作为商业目的,不接广告,推广等一切商业行为. > 仅为那些和我一样不想花半小时看视频,只得到1分钟有用内容的朋友提供方便. 这种精神正是互联网的开放自由精神,也是 GNU 开源精神。希望自己以后能有机会去回馈这些游戏社区。
Posted Aug 18
我才知道卓里奇在8月14日去世了😭就是那本著名的《数学分析》的作者。 虽然我这智商完全看不懂那么现代抽象的分析,本科对我影响更大的是菲赫金哥尔茨的《微积分学教程》和 Rudin 的《数学分析原理》,但是卓里奇数分一直像高山一样在那里吸引着对数学好奇的爬山人。 来源:https://math.msu.ru/node/2048
Posted Aug 17
最近买了徐涛老师的考研英语,呸,考研政治课,非常喜欢,强烈安利。 适用群体是对历史政治感兴趣的人。思而不学则殆,高强度键政必须要与时俱进地建立自己的知识体系,虽然我并不键政- -
Posted Aug 17
必须安利 Lady Gaga 2013 年的专辑 Artpop 的.. Instrumental 版本,也就是纯配乐无人声的专辑,细节太多了,比如这首 G.U.Y. ;而且甚至比原版更好听,比如这首 Dope 。 说起 Instrumental Album,麦当娜在 1998 年的专辑 Ray of Light 的纯配乐版我也反复听,如果喜欢电音的话也可以试试:https://www.mixcloud.com/AGAMEMNON100/madonna-ray-of-light-instrumental-album/
Posted Aug 15
Channel name was changed to «The Black Parade or Death and All His Friends»
Posted Aug 13
😆
Posted Aug 13
仔细检查了 bpf_get_stackid() 的实现,把之前一个放弃的方案捡了回来,解决了“关联 fentry event 和 kprobe event” 的问题,看起来已经没有任何技术障碍了,剩下的工程化只是体力活。 我要做的是观测 bpf program 内部的运行情况,这件事从入职第一天开始困扰我,我问同事,发邮件,查历年的 bpfconf,大家都只是说 "hey kprobe looks like it won't pass the address check in the check_kprobe_address_safe",然后同事继续岁月静好,用大脑编译 bpf 程序,靠静态阅读理解黑洞,我这种弱智是根本跟不上的。 我在各种场合都说,我这么喜欢 tracing,是因为我菜;别人靠静态阅读代码能够发现 race,梳理所有分支,自动代入代码运行时状态和持久化数据,做出可靠正确的分析,但我不行。那种从一个 bpf map 里读一个数据出来,根据其中几个字段和 skb->cb / mark 的掩码来确定下一个分支的走向,在我这里简直就是一个巨大的谜团。对我来说这对“前置知识”的要求太高了,但似乎只有我遭遇了如此困难,其他人都能上手就把活干得又快又好,我做不到。 所以为了不被开除(说起来马上就要到被虾皮开除一周年了),我只能自己造出各种增加观测性的单手武器,用来填补自己平平无奇甚至中等偏下、愚昧不堪的智商。
Posted Aug 10
好耶 我终于也有AirPods Pro2 啦