免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 帅绝人寰

你读kenrel代码,发现过BUG吗? [复制链接]

论坛徽章:
0
发表于 2010-07-22 22:17 |显示全部楼层
如果发现了bug,提出问题,到被接受,再到生成patch,提到kernel里的步骤是怎样的?

哪位走过这个来说说

论坛徽章:
0
发表于 2010-07-22 23:34 |显示全部楼层
内核新新手...

论坛徽章:
0
发表于 2010-07-22 23:46 |显示全部楼层
发现过一个,在2.6.18里,貌似2.6.31里面还没有人解

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
发表于 2010-07-23 00:02 |显示全部楼层
如果发现了bug,提出问题,到被接受,再到生成patch,提到kernel里的步骤是怎样的?

哪位走过这个来说说
unbutun 发表于 2010-07-22 22:17


是这么做的

  1. [root@T-bagwell linux-2.6]# git branch
  2. * master
  3. [root@T-bagwell linux-2.6]#
  4. [root@T-bagwell linux-2.6]#
  5. [root@T-bagwell linux-2.6]# git-branch
  6. * master
  7. [root@T-bagwell linux-2.6]# git-branch Test
  8. [root@T-bagwell linux-2.6]# git-branch
  9.   Test
  10. * master
  11. [root@T-bagwell linux-2.6]# git-checkout Test
  12. Switched to branch 'Test'
  13. [root@T-bagwell linux-2.6]#git-config user.name T-Bagwell
  14. [root@T-bagwell linux-2.6]# git-config user.email liuqi@thunderst.com
  15. [root@T-bagwell linux-2.6]# vim fs/ext4/super.c
  16. [root@T-bagwell linux-2.6]# git-commit fs/ext4/super.c -m "test path for CUer"
  17. [Test 5fca2f3] test path for CUer
  18. 1 files changed, 2 insertions(+), 1 deletions(-)
  19. [root@T-bagwell linux-2.6]# git-format-patch -s master
  20. 0001-test-path-for-CUer.patch
  21. [root@T-bagwell linux-2.6]# cat 0001-test-path-for-CUer.patch
  22. From 5fca2f3af4bd57cba0b7bc751a92d3328fa0b5c2 Mon Sep 17 00:00:00 2001
  23. From: T-Bagwell <liuqi@thunderst.com>
  24. Date: Fri, 23 Jul 2010 03:47:30 +0800
  25. Subject: [PATCH] test path for CUer


  26. Signed-off-by: T-Bagwell <liuqi@thunderst.com>
  27. ---
  28. fs/ext4/super.c |    3 ++-
  29. 1 files changed, 2 insertions(+), 1 deletions(-)

  30. diff --git a/fs/ext4/super.c b/fs/ext4/super.c
  31. index 4e8983a..db19a9b 100644
  32. --- a/fs/ext4/super.c
  33. +++ b/fs/ext4/super.c
  34. @@ -15,7 +15,8 @@
  35.   *  Big-endian to little-endian byte-swapping/bitmaps by
  36.   *        David S. Miller (davem@caip.rutgers.edu), 1995
  37.   */
  38. -
  39. +// example to test
  40. +// for a patch to cuer
  41. #include <linux/module.h>
  42. #include <linux/string.h>
  43. #include <linux/fs.h>
  44. --
  45. 1.7.1

  46. [root@T-bagwell linux-2.6]#vim 0001-test-path-for-CUer.patch
  47. 然后在里面添加一下修改的内容的详细说明,比如修改了什么bug



复制代码
一般是将Subject: [PATCH] test path for CUer往上的几行删掉
接着将内容发mail给MAINTAINERS里面介绍的负责相关的人,抄送给kernel的maillist,项目负责的maillist,接着就可以了,勤在maillist里面交流学习就差不多理解里面的过程了

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
发表于 2010-07-23 00:04 |显示全部楼层
发现过一个,在2.6.18里,貌似2.6.31里面还没有人解
qiwei9743 发表于 2010-07-22 23:46



   
能否详细说说呢?

论坛徽章:
0
发表于 2010-07-23 02:02 |显示全部楼层
谢谢了

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
发表于 2010-07-23 07:44 |显示全部楼层
发现过bug
有些是dead code,有些是细微的逻辑问题(在锁的使用上可以优化一下)

kernel也是软件,是软件就会有bug
要不要那么多做IT的干啥

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
发表于 2010-07-23 07:46 |显示全部楼层
回复 4# platinum


    这个确实比较麻烦
    一直把kernel看得比较神秘
   加上它各个子系统之间复杂的关系
    有时候很难理会到一些做法
    特别是有些ifdef等的判断,都不知道啥时候会出现这些情况
    不过可以给作者或者相关的maillist发信问问

论坛徽章:
0
发表于 2010-07-23 09:07 |显示全部楼层
发现过两个,都是在实际应用中,内核oops了。然后根据oop信息追溯而至。

一个是路由子系统中,一个应用unsign而用成了int的地方,导致流量一大,此变量就溢出了,系统就死掉了。
另一个pptp helper的一个bug,在某种情况下会被触发导致内核死掉。

后来花了很多的时间修复它们,结果最后发现高版本的内核已经把它们都修正了。从此养成了阅读kernel ChangLog的习惯。

论坛徽章:
0
发表于 2010-07-23 09:21 |显示全部楼层
离读内核代码还远呢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP