cookie

نحن نستخدم ملفات تعريف الارتباط لتحسين تجربة التصفح الخاصة بك. بالنقر على "قبول الكل"، أنت توافق على استخدام ملفات تعريف الارتباط.

avatar

Manjusaka 的碎碎念

Manjusaka 的碎碎念

إظهار المزيد
مشاركات الإعلانات
605
المشتركون
لا توجد بيانات24 ساعات
-17 أيام
+1530 أيام

جاري تحميل البيانات...

معدل نمو المشترك

جاري تحميل البيانات...

第五年续命成功,谢谢微软爸爸 做为庆祝,这周把欠 @LeonHuayra 的内核 PR 交了。。 顺便再交一篇关于 GH-121528 的一些碎碎念把
إظهار الكل...
image_2024-07-11_01-18-31.png3.27 KB
睡前把一个很有趣问题 debug 出来了 https://github.com/python/cpython/issues/121528 简而言之是 Python Stable ABI 下一个很奇怪的现象,在 低版本基于 stable ABI 编译的二进制在高版本上会 crash 成因是这样 3.13 后 Python 引入 PEP 683 Immortal Objects 在对象中设置了一个极大数 UINT_MAX 来作为 flag 而与此对应的 Py_INCREF 函数也做了额外的处理,当对 Immortal Object 增加引用计数时,计数不会实际上增加 而问题就出在这里,这个函数是一个 inline 的函数,换句话说,会在调用方展开。也就导致在低版本下编译的话,这个函数不包含对 Immotal Object 做兼容的处理,导致引用计数会实际上增加
إظهار الكل...
[3.13] `Py_INCREF(PyExc_TypeError)` in stable ABI causes `python3.13: ./Include/internal/pycore_object.h:284: _PyObject_Init: Assertion '_PyType_HasFeature(typeobj, Py_TPFLAGS_HEAPTYPE) || _Py_IsImmortal(typeobj)' failed.` · Issue #121528 · python/cpython

Crash report What happened? Consider the following extension. C code: #include <Python.h> static PyObject * foo_bar(PyObject *self, PyObject *args) { Py_INCREF(PyExc_TypeError); PyErr_SetStri...

إظهار الكل...
upstream: Add a facility to sshd(8) to penalise particular · openssh/openssh-portable@81c1099

problematic client behaviours, controlled by two new sshd_config(5) options: PerSourcePenalties and PerSourcePenaltyExemptList. When PerSourcePenalties are enabled, sshd(8) will monitor the exit s...

image_2024-07-01_20-06-24.png5.85 KB
image_2024-07-01_20-06-24.png2.38 MB
发一组很早之前的碎碎念,还是建议每个人都去接受系统的急救训练
إظهار الكل...
快到忌日了,又隐约梦到亡友了。本以为咱俩是“吾与汝俱少年,以为虽暂相别,终当久相与处”的剧情,却也只能感叹造化弄人,没见到最后一面也只能继续抱憾终生(本来我有机会的) 愈发能体会“夜来携手梦同游,晨起盈巾泪莫收” 这人间也是愈发的彻骨了。 望来世一切都好
إظهار الكل...
https://www.manjusaka.blog/posts/2024/06/19/a-live-debug-gh120437/ 和 SRE 日志 系列一样,Debug 日志用来复盘我一些可以公开的调试经历,希望能帮助到大家。 这篇是 Python 3.13 Beta 下 JIT/Tier 2 优化器的一个 Bug ,前后历时五天,最终修改点很小,非常有趣
إظهار الكل...
Debug 日志:CPython GH-120437

和 SRE 日志 系列一样,Debug 日志用来复盘我一些可以公开的调试经历,希望能帮助到大家。 这篇是 Python 3.13 Beta 下 JIT/Tier 2 优化器的一个 Bug ,前后历时五天,最终修改点很小,非常有趣

Repost from N/a
同事在 bpfconf24 的分享(讲道理现在内核 uprobe/uretprobe 就他一个人在开发和维护,请记住他的名字 Jiri Olsa,长这个样子,来自捷克。BTW strace 维护者 Dmitry V. Levin 好像也是捷克人,真是水不在深有龙则灵) 省流版: 1. ur 引入了新的 uretprobe syscall,x86 上性能X3。但是依然要修改用户态栈,go 依然不能直接使用。 2. u 直接把 rbp prologue 替换了,这是没办法的选择,原来 int3 是单字节,如果使用 jmp trampoline 必须用五字节,那这个 execution out-of-line (XOL) 比 int3 的情况复杂得多。内核讨论和实现 XOL 用了好多年,要逐指令讨论,我感觉这个是困难重重的大坑😢 3. USDT,不 care,略。 自从他在 6.9 内核实现了 uprobe-multi 之后,uprobe 的两朵乌云就变成了 int3 性能和 ur 修改用户态栈了。其实他如果真的能用 jmp trampoline 代替 int3 实现 u,那 ur 也不需要修改用户态栈,因为可以像 fentry/fexit 那样用 “Python装饰器法” 来实现 ur,但我觉得五字节的 XOL 难度太大,希望渺茫,男同听了都直摇头。
إظهار الكل...
https://photos.manjusaka.me/ 我家宠物的相册站(
إظهار الكل...
https://github.com/yihong0618/gitblog/issues/257 这篇是老文了,正好看到 gcgg 对为什么用特化 profile 而不用 dtrace 来做,正好5月到现在一直在尝试填 CPython #110385 的坑。我自己的态度正好也发生了一点变化 > 正好看到 gcgg 对为什么用特化 profile 而不用 dtrace 来做 更本质的问题是用 uprobe 还是 usdt 来做,而更进一步的本质问题是 uprobe 和 dtrace 谁更 predictable 曾经的我的回复是更喜欢 USDT,现在我可能用更会喜欢 uprobe 一点来作为答案,这一点可能会超出很多人的预期,我会解释下 USDT 本质上是在代码里有足够的埋点,在编译期处理成 NOP ,attach 后变成 INT3 ,它核心的要求是你需要在代码里有足够的埋点,且你的环境能够开启。而静态很多时候意味着不够 predictable,你无法确认你需要的埋点在你想观测的路径上。 而 uprobe 对于静态埋点更少的需求意味着在生产的环境观测的时候,能够更好的去处理一些上下文,无论是简单的编译开启 debuginfo 然后扣一下 ELF 拿符号,还是暴力 cast target address 做处理,灵活性远高于 uprobe 更别说如果是遇到 JIT 这种场景,执行代码完全没法静态埋点的时候,如果要去做一些可观测性,那么uprobe 可能是最好的也是最后的答案
إظهار الكل...
用 eBPF trace PostgreSQL 的几种姿势 · Issue #257 · yihong0618/gitblog

前 用 eBPF 来观测用户空间应用程序这几年越来越火了,诞生了不少开源的应用,但在数据库这个领域相关的应用还不算太多,特别是 PostgreSQL. 在这个领域之前没那么多人研究可能的原因: 数据库开发在前些年还没像今天这么热门 PostgreSQL 自带 dtrace 只需要在编译时 --enable-dtrace 就可以进行一些观测 pg10 之前应用 uprobe 并不容易 发展 b...

اختر خطة مختلفة

تسمح خطتك الحالية بتحليلات لما لا يزيد عن 5 قنوات. للحصول على المزيد، يُرجى اختيار خطة مختلفة.