cookie

Мы используем файлы cookie для улучшения сервиса. Нажав кнопку «Принять все», вы соглашаетесь с использованием cookies.

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 каналов. Чтобы получить больше, выберите другой план.