免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3969 | 回复: 18
打印 上一主题 下一主题

[其他] Linus Torvalds:用户程序被破坏永远是Kernel的问题! [复制链接]

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-31 09:18 |只看该作者 |正序浏览

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
19 [报告]
发表于 2013-01-02 13:57 |只看该作者
回复 17# captivated


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

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
18 [报告]
发表于 2013-01-02 13:56 |只看该作者
回复 16# 群雄逐鹿中原


    我想起一句台词:森林里我就是王啊。。。

论坛徽章:
3
15-16赛季CBA联赛之山东
日期:2016-10-30 08:47:3015-16赛季CBA联赛之佛山
日期:2016-12-17 00:06:31CU十四周年纪念徽章
日期:2017-12-03 01:04:02
17 [报告]
发表于 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约定.

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

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
16 [报告]
发表于 2013-01-01 21:26 |只看该作者
timothyqiu 发表于 2013-01-01 02:06
看完所有邮件会话感觉貌似被骂的 Mauro 同学想说的是「虽然我确实加了一个不该出现的返回值,但是导致用户程序破坏的是另一个 bug」?


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

论坛徽章:
0
15 [报告]
发表于 2013-01-01 15:31 |只看该作者
回复 13# cokeboL

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

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
14 [报告]
发表于 2013-01-01 11:13 |只看该作者
回复 11# hhxittxs


    对!

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
13 [报告]
发表于 2013-01-01 11:13 |只看该作者
回复 12# timothyqiu


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

如果是这样,即便原来代码中隐藏着按照他如此更改可能产生bug的逻辑,那他更改也应该保证
改过之后不存在这种bug,所以还是更改者自己的bug。

论坛徽章:
0
12 [报告]
发表于 2013-01-01 02:06 |只看该作者
看完所有邮件会话感觉貌似被骂的 Mauro 同学想说的是「虽然我确实加了一个不该出现的返回值,但是导致用户程序破坏的是另一个 bug」?……不知道最后怎么样了……

论坛徽章:
0
11 [报告]
发表于 2012-12-31 23:18 |只看该作者
如果团队里有水平不高自作聪明又不虚心听教的SB就该骂! 如果一而再再而三地还那德行,就直接开除,滚得越远越好!
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP