zd零
发表于 2012-07-17 14:12
代码倒是看过一点,可 Bug 倒是没发现过,主要是现在一直停留在理解人的代码阶段,要是能透彻理解了就能发现问题了。
new_learner
发表于 2012-07-17 19:10
折腾linux kernel代码的,都工作在明处,有什么成绩大家都看得到;
像我这种折腾非linux kernel代码的,找了N多bug,可没人知道。。。:Q:Q
zhanglong71
发表于 2012-07-27 19:46
相比bug, 更多的是怀疑自己有没有吃透作者的想法。
amarant
发表于 2014-10-25 18:14
本人菜鸟一枚,但是偶尔也会发现kernel里面的bug。小的诸如前面有人说的编译问题,大的诸如DMA操作不刷cache之类的。尤其linaro社区的kernel,bug更是多如牛毛。当然这么回复不是为了标榜自己多牛。只是想告诉一些想学习内核的朋友,不要把kernel看的多高深。因为参与者非常多,大家水平参差不齐,低水准的代码也难避免。只要英语好,时间充沛,就能参与到社区里面去。
kiongf
发表于 2014-10-30 18:18
我发现过kenrel Makefile 的make tags中有个bug算不算.... 会出现部分目录比如,security/selinux/目录下文件中函数符号丢失.
arm-linux-gcc
发表于 2014-11-17 21:38
发现了一个数组越界的bug,在网上查到有其他人提了patch,但是至今都没merge进去
MMC_NUM_PHY_PARTITION定义的是6,正确的应该是7
RYefccd
发表于 2014-11-18 19:43
上个学期在刚开始学习编写驱动时,一个同学发现的。一般会判断大小是否超过一页,1024B。文件指针有一个相对位置移动的功能,如果向反方向移动,会用当前指针减去要移动的位数(即s为负数),并判断其结果是否小于1024. if(p + s < 1024 ) ........
结果if结果为假,本来只是为了程序的健壮性才做的判断,因为刚开始学,基本上一页内存的缓冲区就够了,排除了其他可能的错误,结果发现这里错了,当时觉得很不可思议,想了很久,是因为它没有执行减法,而是负数s被表示为它的补码,是一个大于1024的数字,明白这个以后,我就先进行判断,如果s大于2的16次方减1,那么他就是负数,手动用2的32次方减去这个数。得到应该向左偏移的位数,再用当前指针p减去s就可以了。
这应该算是个bug吧,是一个同学发现的,她没有用老师要求的内核版本,不过我忘了具体的是哪一个版本。我们的就没有这个情况,看来他们应该更正了这个缺陷。我觉得可能是在传递s这个参数的时候,不小心把有符号长整参数变成了无符号数吧,不过,我不知道怎么看内核代码,就没找出出错的点。