想知道谁在裸泳吗?
1986 年,明尼苏达大学的流行病学家大卫·斯诺登开展了对阿尔茨海默病的“修女研究”。修女们的生活环境、生活方式统一,而且没有不良嗜好,所以是理想的研究对象。
研究发现:一些修女虽然大脑中存在严重的阿尔茨海默病的病理特征,但并未表现出痴呆症状。也就是说,脑损伤会引起阿尔茨海默病,但并不是绝对的。
对这些修女们的分析发现:在年轻时能用简洁语言表达高密度信息的人,晚年的认知功能也更强。而文字信息密度低,写东西像流水账的人,患阿尔兹海默病的风险也高得多。
这可能意味着:如果一个人年轻时储备了足够多的认知能力,衰老造成的伤害也难以将高认知能力的大脑降低到痴呆的程度。
via tombkeeper的微博
研究发现:一些修女虽然大脑中存在严重的阿尔茨海默病的病理特征,但并未表现出痴呆症状。也就是说,脑损伤会引起阿尔茨海默病,但并不是绝对的。
对这些修女们的分析发现:在年轻时能用简洁语言表达高密度信息的人,晚年的认知功能也更强。而文字信息密度低,写东西像流水账的人,患阿尔兹海默病的风险也高得多。
这可能意味着:如果一个人年轻时储备了足够多的认知能力,衰老造成的伤害也难以将高认知能力的大脑降低到痴呆的程度。
via tombkeeper的微博
今天看到性萧条的文章,好奇的去搜了一下挚文集团的营收,挚文集团旗下有非常著名的婚恋YP平台,探探、陌陌、赫兹、牵手、贴贴等 App
年份 全年总营收 同比变化 核心原因
2020年 150.24亿元 - 历史营收峰值
2021年 145.76亿元 -3.0% 初次小幅下滑
2022年 127.04亿元 -12.8% 下滑幅度扩大
2023年 120.02亿元 -5.5% 持续收缩
2024年 105.63亿元 -12.0% 大幅下滑
2025年 103.67亿元 -1.9% 降幅收窄
由于国内营收持续下降,已经布局欧亚非市场:
Yaahlan:中东王牌产品,对标探探,当地约会社交头部App,是海外第一收入来源
Happn:欧洲收购的老牌同城偶遇社交App,基于路人擦肩而过的定位匹配,深耕法国、西班牙市场
Blupe:北非、东南亚泛陌生人社交,主打低成本会员订阅,复刻陌陌早期玩法
出海主力App 成为挚文集团核心增长点,海外营收占比25%,2026Q1同比+44%
by @兔撕鸡大老爷 #你不知道的行业内幕
年份 全年总营收 同比变化 核心原因
2020年 150.24亿元 - 历史营收峰值
2021年 145.76亿元 -3.0% 初次小幅下滑
2022年 127.04亿元 -12.8% 下滑幅度扩大
2023年 120.02亿元 -5.5% 持续收缩
2024年 105.63亿元 -12.0% 大幅下滑
2025年 103.67亿元 -1.9% 降幅收窄
由于国内营收持续下降,已经布局欧亚非市场:
Yaahlan:中东王牌产品,对标探探,当地约会社交头部App,是海外第一收入来源
Happn:欧洲收购的老牌同城偶遇社交App,基于路人擦肩而过的定位匹配,深耕法国、西班牙市场
Blupe:北非、东南亚泛陌生人社交,主打低成本会员订阅,复刻陌陌早期玩法
出海主力App 成为挚文集团核心增长点,海外营收占比25%,2026Q1同比+44%
by @兔撕鸡大老爷 #你不知道的行业内幕
大模型训练里有个基础概念,"词向量",理解了这个词,可能会帮你更好的理解人。
计算机本来是不认字的,那它怎么读懂"苹果"是什么意思?
1950 年代有个语言学家说过一句话,成了后来整套技术的地基:"You shall know a word by the company it keeps."
想知道一个词什么意思,就看它常跟哪些词做伴。
机器根本不"理解"苹果,它只是把全人类写过的句子数了一遍,发现"苹果"总跟"吃、甜、树、水果"一起出现,就把它摆到了那一堆旁边。观其伴,而知其义。
我们天天刷到的"猜你喜欢",也是同一套逻辑,只是换了数据源——这里的"伴"从词变成了你的行为。你看过、买过、点赞过、看完没快进的东西,就是你的"上下文"。
系统统计哪些人常一起喜欢哪些东西,把你和每件商品都变成一个空间里的点:爱看《星际穿越》《三体》的人也爱看《沙丘》,这三部就挨得很近,常看它们的你也被拉到那一带。
想象一个巨大的兴趣广场,几亿人和几亿件商品都站在上面,兴趣越像站得越近;推荐你,不过是系统站在你的位置往四周看一圈,把你伸手够得着的递给你。所谓"猜你喜欢",没有玄学,就是量了一下距离,把最近的邻居拿过来。
学到这儿你可能就懂了,这不就是我们看人的方式吗?
很多时候,想看透一个人,跟他本人聊未必最准,话是可以修饰的。
但一个人长期跟谁来往、待在什么样的圈子里、喜欢什么讨厌什么、书架上摆着什么,这些"邻居"很难装。观其邻,而知其人。
但人比词有意思的地方,是词只能被动地被邻居定义,人却能自己挪位置。词只能"被观其邻而知义",人却能"选其邻而成其义"。
你选择靠近谁、远离谁、泡在什么社区、允许什么样的人进入你的上下文,这本身就是在雕刻你会变成谁。这是词没有、而人独有的自由。
你多一个爱好、留一道伤疤、换一份事业,都是在亲手把自己的坐标往某个方向搬,顺带换掉一圈邻居。词没得选,人却随时可以搬家。
所以真想理解一个人,看他过去和现在的邻能知道他从哪来,但还有一层,他正努力靠近的、那个还没成为的邻,往往才更接近他想成为的自己。
by @我的兄弟叫铁马 #无用但有趣的冷知识
计算机本来是不认字的,那它怎么读懂"苹果"是什么意思?
1950 年代有个语言学家说过一句话,成了后来整套技术的地基:"You shall know a word by the company it keeps."
想知道一个词什么意思,就看它常跟哪些词做伴。
机器根本不"理解"苹果,它只是把全人类写过的句子数了一遍,发现"苹果"总跟"吃、甜、树、水果"一起出现,就把它摆到了那一堆旁边。观其伴,而知其义。
我们天天刷到的"猜你喜欢",也是同一套逻辑,只是换了数据源——这里的"伴"从词变成了你的行为。你看过、买过、点赞过、看完没快进的东西,就是你的"上下文"。
系统统计哪些人常一起喜欢哪些东西,把你和每件商品都变成一个空间里的点:爱看《星际穿越》《三体》的人也爱看《沙丘》,这三部就挨得很近,常看它们的你也被拉到那一带。
想象一个巨大的兴趣广场,几亿人和几亿件商品都站在上面,兴趣越像站得越近;推荐你,不过是系统站在你的位置往四周看一圈,把你伸手够得着的递给你。所谓"猜你喜欢",没有玄学,就是量了一下距离,把最近的邻居拿过来。
学到这儿你可能就懂了,这不就是我们看人的方式吗?
很多时候,想看透一个人,跟他本人聊未必最准,话是可以修饰的。
但一个人长期跟谁来往、待在什么样的圈子里、喜欢什么讨厌什么、书架上摆着什么,这些"邻居"很难装。观其邻,而知其人。
但人比词有意思的地方,是词只能被动地被邻居定义,人却能自己挪位置。词只能"被观其邻而知义",人却能"选其邻而成其义"。
你选择靠近谁、远离谁、泡在什么社区、允许什么样的人进入你的上下文,这本身就是在雕刻你会变成谁。这是词没有、而人独有的自由。
你多一个爱好、留一道伤疤、换一份事业,都是在亲手把自己的坐标往某个方向搬,顺带换掉一圈邻居。词没得选,人却随时可以搬家。
所以真想理解一个人,看他过去和现在的邻能知道他从哪来,但还有一层,他正努力靠近的、那个还没成为的邻,往往才更接近他想成为的自己。
by @我的兄弟叫铁马 #无用但有趣的冷知识
苦难是文学的温床,情绪生意才是一本万利的罪恶之道,昨天的最大感受。
最近揭阳烧狗事件,让我太愤怒,于是在各大社交平台上刷帖,想获得更多消息,但有个挺有意思的发现,那就是整个事件的关注者可以分为三层,第一,空有愤怒却没有思考的观众,第二,有意识并且在靠此事牟利的引导者,第三,默默观战者。
我将其总结为三类,傻子,疯子和瞎子。
起因是我卧底了三个群,说来有趣,最开始是在某平台上刷到一个义愤填膺的揭阳人,说自己是邻村的,一定要为狗妈妈讨个说法。于是我经过他的二维码引流,来到了他的群里。
群主的说法是:我是隔壁村的,这个村四个未成年肇事者已经被保护了起来,当地派出所也在保护村民,现在任何人都进不去,我明天可以偷偷去村里转一圈,如果进不去这个村子,我就印发传单去隔壁村宣发!
厉害,我在心里默默为这个07年的男孩子点了个赞,继续潜水。
很快群里开始有人叫嚣,说要给群主募捐,起码要承担一部分打印的费用,于是大家纷纷慷慨解囊,我在群里蹲了这么久,于是也捐了5块,可以说是本群最小数目,那些20、50捐的人不在少数。要知道这个群160个人,前端多个平台分发的话,他完全可以建十几个100号人的群,如果每个群能收500,那么也是大几千的收益。
到这里,其实已经有点眉目了,和崩老头路数一致。但大部分人还没有反应过来,还在愤怒的讨论事情。但大部分网友还算有理性,只提倡去电商平台给揭阳商户发起退款退货,并且要在各大平台刷帖,保持热度。
很快有个女生在群里发了一个群二维码,标题叫,人肉xx畜生的进。
标题劲爆情绪激烈,那个群呼啦啦进了几十号人,我也在其中,群主是个中年男人,看个人资料应该是做装修行业的,他上来就说,我就是这个村的,我孤家寡人一个,要去手刃肇事者(我这里是美化后的版本,原话更直抒胸臆
群里本来就是看热闹的,看大哥这么激动,大家纷纷劝阻,我觉得挺有意思的,就问了一句,我说哥,你是遇到什么事儿了吗?那个男的直接q我:那个狗妈妈死的那么惨,不为她报仇天理不容!
大哥估计没想到这届年轻网友这么理性,大姑娘小伙子全在劝他,不要冲动,这个也能理解,万一出了事情,群友都要被传唤的。所以大家全都秉持着多一事不如少一事的原则,到后面干脆在癫狂的大哥面前彻底闭了嘴。
但这个大哥不依不饶,很快群里进了另一个人,直奔大哥:你放心去干吧!我替你照顾家小!然后反手转了大哥500块。
我看这个转钱的和那个叫嚣着要砍人的,两个微信名有相似之处,好奇下我就在群里点了这两个人的转账界面,显示名字最后是同一个字。
到这里事情水落石出,群主是个骗钱的,想激起大家的情绪给他转钱,但群里没人接话,于是拉了自己的小号进来搭台唱戏。
很快有人揭穿了他:你两个号,累不累啊?
嘎吱,大哥截然而止,下一秒就解散了群聊。笑死。
于是大家退回最开始那个07年男生组建的群,有意思的事情还在后面,突然这个男生说,我被派出所打电话了,叫我去谈话,这个群先解散。群里有个男的回他,那解散群前,你先把收的钱还给大家。话音刚落,群解散了。
几乎就在群解散的第一时间,五个人加了我的微信,因为之前我在群里贡献了一些推理,所以这些人估计是想找我复盘一下。
很快,我被其中一个女生拉进了新的群,到这里,已经是我进的第三个群了。
这个群是先前那个群主组建的用来募捐的群,和上一个群的原班人马差不多,大家都在讨论群主的嘎然解散群这个动作,此时已经有人问了:这,不会是骗子吧?
也有人在为群主喊冤,他们的解释是,眼下这个节骨眼上,就是被盯得很紧,群主被传唤谈话,是要被查手机的,他退群是最好的办法。
过了一会,群主进了这个群,开始发自己的派出所翘二郎腿的照片,三不五时的配一句,我过两天去看看怎么回事。有人问:那你现在不去的话,先把钱还给大家把?群主毫无反应,当没听见一样
其实到这里,已经很明显了,就是骗子,而且是个年纪很小的骗子,害怕出事,所以不能直接解散群,到时候很有可能,直接去现场转一圈,拍点照片,用点借口,把事儿敷衍过去。
群里的女生们又建立了一个小群,把我也拉进去了,我说大家先统计一下,每个人捐了多少吧,其实我是想大概估摸一下这个人靠这波赚了多少,于是群里开始接龙,于是一个年纪很小的女孩开始慌了:他真的是骗子吗?我把妈妈给我坐车的钱都给他了,我现在准备走路回家了都。
我问,你给了多少,女孩回答,我妈妈给了我10块钱,我转了5块给他。
我转了10块给女孩,说,下次不要给任何人钱,你这个年龄没到报答社会的时候。她退给了我,说谢谢姐姐,这个钱我不能要。
但很快,群里有人开始制止我,说这个事情到现在还没定性呢,群主就是骗子吗?你要这样冤枉好人吗?万一他是好人呢?
对对对,群里很多人在附和,说我们再看看吧。
我把群设置成了折叠。内心觉得真的挺有意思的,花了5块钱看了一场庞大的套路赛。虽然心里清楚每次流量狂欢都必然伴随着这样的行为,因为群体的情绪是最好被操控的,但我依然想说:潮汕这个地方,的确有点说法啊。
无地域歧视,纯粹个人偏见。
by @周阿包 #你不知道的行业内幕
最近揭阳烧狗事件,让我太愤怒,于是在各大社交平台上刷帖,想获得更多消息,但有个挺有意思的发现,那就是整个事件的关注者可以分为三层,第一,空有愤怒却没有思考的观众,第二,有意识并且在靠此事牟利的引导者,第三,默默观战者。
我将其总结为三类,傻子,疯子和瞎子。
起因是我卧底了三个群,说来有趣,最开始是在某平台上刷到一个义愤填膺的揭阳人,说自己是邻村的,一定要为狗妈妈讨个说法。于是我经过他的二维码引流,来到了他的群里。
群主的说法是:我是隔壁村的,这个村四个未成年肇事者已经被保护了起来,当地派出所也在保护村民,现在任何人都进不去,我明天可以偷偷去村里转一圈,如果进不去这个村子,我就印发传单去隔壁村宣发!
厉害,我在心里默默为这个07年的男孩子点了个赞,继续潜水。
很快群里开始有人叫嚣,说要给群主募捐,起码要承担一部分打印的费用,于是大家纷纷慷慨解囊,我在群里蹲了这么久,于是也捐了5块,可以说是本群最小数目,那些20、50捐的人不在少数。要知道这个群160个人,前端多个平台分发的话,他完全可以建十几个100号人的群,如果每个群能收500,那么也是大几千的收益。
到这里,其实已经有点眉目了,和崩老头路数一致。但大部分人还没有反应过来,还在愤怒的讨论事情。但大部分网友还算有理性,只提倡去电商平台给揭阳商户发起退款退货,并且要在各大平台刷帖,保持热度。
很快有个女生在群里发了一个群二维码,标题叫,人肉xx畜生的进。
标题劲爆情绪激烈,那个群呼啦啦进了几十号人,我也在其中,群主是个中年男人,看个人资料应该是做装修行业的,他上来就说,我就是这个村的,我孤家寡人一个,要去手刃肇事者(我这里是美化后的版本,原话更直抒胸臆
群里本来就是看热闹的,看大哥这么激动,大家纷纷劝阻,我觉得挺有意思的,就问了一句,我说哥,你是遇到什么事儿了吗?那个男的直接q我:那个狗妈妈死的那么惨,不为她报仇天理不容!
大哥估计没想到这届年轻网友这么理性,大姑娘小伙子全在劝他,不要冲动,这个也能理解,万一出了事情,群友都要被传唤的。所以大家全都秉持着多一事不如少一事的原则,到后面干脆在癫狂的大哥面前彻底闭了嘴。
但这个大哥不依不饶,很快群里进了另一个人,直奔大哥:你放心去干吧!我替你照顾家小!然后反手转了大哥500块。
我看这个转钱的和那个叫嚣着要砍人的,两个微信名有相似之处,好奇下我就在群里点了这两个人的转账界面,显示名字最后是同一个字。
到这里事情水落石出,群主是个骗钱的,想激起大家的情绪给他转钱,但群里没人接话,于是拉了自己的小号进来搭台唱戏。
很快有人揭穿了他:你两个号,累不累啊?
嘎吱,大哥截然而止,下一秒就解散了群聊。笑死。
于是大家退回最开始那个07年男生组建的群,有意思的事情还在后面,突然这个男生说,我被派出所打电话了,叫我去谈话,这个群先解散。群里有个男的回他,那解散群前,你先把收的钱还给大家。话音刚落,群解散了。
几乎就在群解散的第一时间,五个人加了我的微信,因为之前我在群里贡献了一些推理,所以这些人估计是想找我复盘一下。
很快,我被其中一个女生拉进了新的群,到这里,已经是我进的第三个群了。
这个群是先前那个群主组建的用来募捐的群,和上一个群的原班人马差不多,大家都在讨论群主的嘎然解散群这个动作,此时已经有人问了:这,不会是骗子吧?
也有人在为群主喊冤,他们的解释是,眼下这个节骨眼上,就是被盯得很紧,群主被传唤谈话,是要被查手机的,他退群是最好的办法。
过了一会,群主进了这个群,开始发自己的派出所翘二郎腿的照片,三不五时的配一句,我过两天去看看怎么回事。有人问:那你现在不去的话,先把钱还给大家把?群主毫无反应,当没听见一样
其实到这里,已经很明显了,就是骗子,而且是个年纪很小的骗子,害怕出事,所以不能直接解散群,到时候很有可能,直接去现场转一圈,拍点照片,用点借口,把事儿敷衍过去。
群里的女生们又建立了一个小群,把我也拉进去了,我说大家先统计一下,每个人捐了多少吧,其实我是想大概估摸一下这个人靠这波赚了多少,于是群里开始接龙,于是一个年纪很小的女孩开始慌了:他真的是骗子吗?我把妈妈给我坐车的钱都给他了,我现在准备走路回家了都。
我问,你给了多少,女孩回答,我妈妈给了我10块钱,我转了5块给他。
我转了10块给女孩,说,下次不要给任何人钱,你这个年龄没到报答社会的时候。她退给了我,说谢谢姐姐,这个钱我不能要。
但很快,群里有人开始制止我,说这个事情到现在还没定性呢,群主就是骗子吗?你要这样冤枉好人吗?万一他是好人呢?
对对对,群里很多人在附和,说我们再看看吧。
我把群设置成了折叠。内心觉得真的挺有意思的,花了5块钱看了一场庞大的套路赛。虽然心里清楚每次流量狂欢都必然伴随着这样的行为,因为群体的情绪是最好被操控的,但我依然想说:潮汕这个地方,的确有点说法啊。
无地域歧视,纯粹个人偏见。
by @周阿包 #你不知道的行业内幕
抹茶发现 netfilter userspace library "libnftnl" 的 examples/nft-set-elem-add.c 跑不起来,看 syscall 也看不懂,毕竟 netlink msg 谁™能看懂?
一起痛骂 “libnftnl 是什么垃圾” 和 “你的 7.2 内核太新了,新内核全是 bug 很合理” 之后,我也好奇起来了,netlink syscall 报错溯因对我来说也是个谜,正好学习一下,而且这周工作写文档太恶心了想裸奔。
经过一堆准备工作之后:
1. 修改代码让它变成一个“启动暂停、 ctrl-c 继续运行” 的两阶段程序,延长进程生命方便我用 pid 过滤事件
2. 下载 linux-image-$(uname -r)-dbgsym 方便映射符号
3. 准备 @eBPFTalk001 的 bpfsnoop 方便用 lbr 回溯内核执行流
4. 准备 brendangregg/perf-tools 方便用 funcgraph
5. 下载 Ubuntu-hwe-6.17-6.17.0-35.35_24.04.1 源码
神秘的 Linux 内核系列又回来啦!
首先要找个合适的回溯点。直接从 __x64_sys_sendto syscall 回溯 lbr 得不到太多信息,全是 kfree_skb 之类的清理,所以找找看 netfilter netlink error 相关的 kprobe,结果还真找到一个:
然后用 lbr 检查内核是如何执行到这里的:
还有另一种思路,看整个 syscall 的 funcgraph,也能看到 nfnl_err_add 和完整的执行流
两份 trace log 一结合,立刻能知道是在 nft_data_init() 里返回了 -EINVAL,然后用 lbr 跳转记录仔细跟一下源码,看到这一条跳转:
对应的源码是
看懂了吧,len != desc->len 所以 return -EINVAL,看下 desc->len 是 nft_set->klen 由 nft table 的 set type 决定的长度,比如我是用
定义的 ipv4_addr type, desc->len = klen = 4;但是 nft-set-elem-add.c 里传给 netlink 的 uint16_t data 长度是 2,所以内核检查不通过,返回 -EINVAL,QED。
你以为我很高兴吗,不,我很悲伤,因为我其实一开始就用 LLM 解答万物了,把 Linux 源码 + nft-set-elem-add.c 源码 + strace 日志扔给 codex5.5 medium,它只用了三十秒就找到了问题;然后我自己再用上面这些眼花缭乱的 tracing 手段去追溯源码,用了一个小时。投降了,已皈依 LLM 神教饶我狗命🐕
一起痛骂 “libnftnl 是什么垃圾” 和 “你的 7.2 内核太新了,新内核全是 bug 很合理” 之后,我也好奇起来了,netlink syscall 报错溯因对我来说也是个谜,正好学习一下,而且这周工作写文档太恶心了想裸奔。
经过一堆准备工作之后:
1. 修改代码让它变成一个“启动暂停、 ctrl-c 继续运行” 的两阶段程序,延长进程生命方便我用 pid 过滤事件
2. 下载 linux-image-$(uname -r)-dbgsym 方便映射符号
3. 准备 @eBPFTalk001 的 bpfsnoop 方便用 lbr 回溯内核执行流
4. 准备 brendangregg/perf-tools 方便用 funcgraph
5. 下载 Ubuntu-hwe-6.17-6.17.0-35.35_24.04.1 源码
神秘的 Linux 内核系列又回来啦!
首先要找个合适的回溯点。直接从 __x64_sys_sendto syscall 回溯 lbr 得不到太多信息,全是 kfree_skb 之类的清理,所以找找看 netfilter netlink error 相关的 kprobe,结果还真找到一个:
$ bpftrace -p $(pidof nft-set-elem-add) -e 'k:*nf*err* {printf("%s\n", probe);}'
Attached 11 probes
kprobe:nfnl_err_add然后用 lbr 检查内核是如何执行到这里的:
$ ./bpfsnoop -k nfnl_err_add --output-lbr --filter-pid $(pidof nft-set-elem-add) --mode entry
__nla_validate_parse+0xb6 (lib/nlattr.c:655) -> __nla_parse+0x23 (lib/nlattr.c:734)
__nla_parse+0x35 (lib/nlattr.c:734) -> nft_data_init+0x77 (net/netfilter/nf_tables_api.c:11894)
nft_data_init+0xae (net/netfilter/nf_tables_api.c:11847) -> nft_data_init+0x115 (net/netfilter/nf_tables_api.c:11890)
nft_data_init+0x11a (net/netfilter/nf_tables_api.c:11890) -> nft_data_init+0xba (net/netfilter/nf_tables_api.c:11912)
nft_data_init+0xe0 (net/netfilter/nf_tables_api.c:11912) -> nft_add_set_elem+0x2be (net/netfilter/nf_tables_api.c:7380)还有另一种思路,看整个 syscall 的 funcgraph,也能看到 nfnl_err_add 和完整的执行流
$ ./funcgraph -p $(pidof nft-set-elem-add) -m 50 __x64_sys_sendto
6) | nf_tables_newsetelem [nf_tables]() {
6) 0.634 us | nft_set_lookup_global [nf_tables]();
6) | nft_add_set_elem [nf_tables]() {
6) 0.586 us | nft_data_init [nf_tables]();
6) 1.659 us | }
6) 7.547 us | }
6) | nfnl_err_add [nfnetlink]() {
6) | __kmalloc_cache_noprof() {
6) 0.106 us | __cond_resched();
6) 1.109 us | }
6) 1.444 us | }两份 trace log 一结合,立刻能知道是在 nft_data_init() 里返回了 -EINVAL,然后用 lbr 跳转记录仔细跟一下源码,看到这一条跳转:
nft_data_init+0xae (net/netfilter/nf_tables_api.c:11847) -> nft_data_init+0x115 (net/netfilter/nf_tables_api.c:11890)对应的源码是
11846 if (desc->len) {
11847 if (len != desc->len)
11848 return -EINVAL;
[...]
11890 return -EINVAL;
[...]看懂了吧,len != desc->len 所以 return -EINVAL,看下 desc->len 是 nft_set->klen 由 nft table 的 set type 决定的长度,比如我是用
nft add set ip t s '{ type ipv4_addr; }'定义的 ipv4_addr type, desc->len = klen = 4;但是 nft-set-elem-add.c 里传给 netlink 的 uint16_t data 长度是 2,所以内核检查不通过,返回 -EINVAL,QED。
你以为我很高兴吗,不,我很悲伤,因为我其实一开始就用 LLM 解答万物了,把 Linux 源码 + nft-set-elem-add.c 源码 + strace 日志扔给 codex5.5 medium,它只用了三十秒就找到了问题;然后我自己再用上面这些眼花缭乱的 tracing 手段去追溯源码,用了一个小时。投降了,已皈依 LLM 神教饶我狗命