Chinaunix

标题: Linus Torvalds:用户程序被破坏永远是Kernel的问题! [打印本页]

作者: cokeboL    时间: 2012-12-31 09:18
标题: Linus Torvalds:用户程序被破坏永远是Kernel的问题!
http://www.csdn.net/article/2012 ... -says-Mauro-shut-up

太霸气了!
作者: smarter_feng    时间: 2012-12-31 09:30
文明用语, 骂人是不对的, 目的是要把问题解决!
作者: zimang    时间: 2012-12-31 09:32
如果修改会导致用户程序的破坏,那问题一定是在Kernel上!

N
作者: cokeboL    时间: 2012-12-31 09:33
回复 2# smarter_feng


用词基本是文明的,没脏话,只是严厉了些~

严师出高徒,严父出孝子啊
作者: smarter_feng    时间: 2012-12-31 09:37
好像有shut the fuck up, 算不算脏话? 外语比较差。:wink:
cokeboL 发表于 2012-12-31 09:33
回复 2# smarter_feng

作者: liuiang    时间: 2012-12-31 09:53
前两天就已经瞻仰过了。
作者: cokeboL    时间: 2012-12-31 10:06
回复 5# smarter_feng


    额,算。。。
作者: zhengb302    时间: 2012-12-31 13:46
看来Linus对内核的质量要求很高啊
作者: 群雄逐鹿中原    时间: 2012-12-31 16:36
本帖最后由 群雄逐鹿中原 于 2012-12-31 16:56 编辑

好 diao !!
作者: cokeboL    时间: 2012-12-31 16:56
回复 9# 群雄逐鹿中原


    哪国人都有口头禅,我觉得fuck在邮件里这种,大部分看做强调语气。。。
作者: hhxittxs    时间: 2012-12-31 23:18
如果团队里有水平不高自作聪明又不虚心听教的SB就该骂! 如果一而再再而三地还那德行,就直接开除,滚得越远越好!
作者: timothyqiu    时间: 2013-01-01 02:06
看完所有邮件会话感觉貌似被骂的 Mauro 同学想说的是「虽然我确实加了一个不该出现的返回值,但是导致用户程序破坏的是另一个 bug」?……不知道最后怎么样了……
作者: cokeboL    时间: 2013-01-01 11:13
回复 12# timothyqiu


我没看所有的,但是,看linus的口气,应该是他更改之前,应用没出问题,改了之后出问题了。

如果是这样,即便原来代码中隐藏着按照他如此更改可能产生bug的逻辑,那他更改也应该保证
改过之后不存在这种bug,所以还是更改者自己的bug。
作者: cokeboL    时间: 2013-01-01 11:13
回复 11# hhxittxs


    对!
作者: timothyqiu    时间: 2013-01-01 15:31
回复 13# cokeboL

Linus 的也只是一家之言啦,比较完整的邮件列表:http://thread.gmane.org/gmane.linux.kernel/1413835/focus=1414106

作者: 群雄逐鹿中原    时间: 2013-01-01 21:26
timothyqiu 发表于 2013-01-01 02:06
看完所有邮件会话感觉貌似被骂的 Mauro 同学想说的是「虽然我确实加了一个不该出现的返回值,但是导致用户程序破坏的是另一个 bug」?


现实中不乏这种情况。 “我”的程序,分明是一个很好的测试例程,让“你” 的bug有了暴露的机会;“你” 却埋怨我让你的程序跑飞了。这还有天理吗?
碰到这种合作,非常恼火的。


作者: captivated    时间: 2013-01-02 03:13

所有的邮件列表看完.

Linus是伟光正的, 但Mauro同学似乎也木有错.
争论是用户程序通过ioctl陷入内核后, 同样的获取资源/搞点什么的操作, Mauro同学打补丁前返回值应该/大约是EINVAL, 但是Mauro同学在某驱动/内核API函数中把这个返回值给改了, 改成了ENOENT.
当然咯: 不同的返回值表示不同的错误. 用户程序通过测试返回值知道发生了什么错误再采取下一步动作.

打个比方... 比如写了个可以根据index往链表中插入节点的API. 由于是链表插入操作, 要为新节点分配内存, 因此malloc有可能失败, 那么如果内存分配失败的话约定返回-1给调用方. 问题是插入节点的API仍可能失败 -- 比如当前链表长度只有5个节点, 但是用户要求将数据插入到第8个节点之前 -- 这时这个API当然不能傻乎乎地就去插入吧, 同样返回个错误给用户才行啊, 于是约定当index错误时返回-2给调用方. 正常操作并成功返回0, 惯例.
-- 这表示, 用户和链表插入API之间有个约定, 这个约定是不能随便破坏的, 否则程序肿木协作啊是不.

所以Mauro童鞋把返回值一改就出问题了, 原来用户程序[似乎pulseaudio? 艹, 说起这daemon我火大, Ubuntu下面root用户进图形界面那声音按钮木反应, 非要自己动点手脚才能正常工作, 你要是自己启动它, 这哥们还提示什么系统模式不安全啥啥啥的... ]工作得好好的啊, 尼玛现在crash了.

Linus一看, 我草好你个Mauro童鞋, 人家用户发邮件问程序崩了肿木回事, 这明显是你个烂人把错误返回码改了闹出来的嘛, 你竟然还去说是用户程序的问题, 草, 于是怒了, 把Mauro童鞋批了一顿: 艹返回值是能随便改滴么, 那是和用户滴约定你知道么, 你打破约定导致用户程序崩了是你滴错知道木,.. blablabla...

Mauro童鞋是内核开发者啊, 尼玛那水平肯定是杠杠的, 我等菜鸟不能比. 连我等菜鸟都熟知的事情, Mauro童鞋会不知道? 当然是不可能滴. 于是Mauro童鞋委屈滴辩解, 是啊, 偶是修改了返回值, 可TMD这返回值确实应该改, 因为尼玛一大堆驱动都是A约定, 可TMD这玩意它不小心整成了B约定, 哥觉得吧, 少数服从多数, 所以这玩意该整成A约定.

...... 嗯, 大抵就是如此了.

作者: cokeboL    时间: 2013-01-02 13:56
回复 16# 群雄逐鹿中原


    我想起一句台词:森林里我就是王啊。。。
作者: cokeboL    时间: 2013-01-02 13:57
回复 17# captivated


    linus火气还真是大,不过天才往往比较自负和偏激




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2