Linus Torvalds 在10月3日发布了Linux 4.8的正式版,在正式发布前他接受了 Andrew Morton 发来的补丁,补丁的目的是修复一个自3.15以来就存在的bug,然而它却导致了比原bug更严重的问题。
他在内核邮件列表上对此道歉,称他对 Andrew的补丁本有很高的期望,认为他肯定对递交的补丁进行了充分的测试,但在代码中加入随机的 BUG_ON()意味着测试不够。他在2002年曾经强烈批评过使用BUG_ON()调试bug的方法,但同样的事情却在将近15年后再次发生了。
邮件部分内容如下:
I’m really sorry I applied that last series from Andrew just before doing the 4.8 release, because they cause problems, and now it is in 4.8 (and that buggy crap is marked for stable too).
In particular, I just got this kernel BUG at ./include/linux/swap.h:276 and the end result was a dead kernel.The bug that commit 22f2ac51b6d64 (“mm: workingset: fix crash in shadow node shrinker caused by replace_page_cache_page()”) purports to have fixed has apparently been there since 3.15, but the fix is clearly worse than the bug it tried to fix, since that original bug has never killed my machine!
I should have reacted to the damn added BUG_ON() lines. I suspect I will have to finally just remove the idiotic BUG_ON() concept once and for all, because there is NO F*CKING EXCUSE to knowingly kill the kernel.
更多请查看完整版。
Andrew辩解称没有多少人会触发这个问题,但他的辩解再次遭到了Linus的批评,称他口中在少数人相当于几乎所有人。
via:Solidot