systems
3 篇文章
當機的驗屍課(上):先學會看一具程式的屍體
用「命案調查」的方式學程式怎麼當機。這是三部曲的第一課:先搞懂 CPU、stack、回程地址、segfault 是什麼——之後才驗屍、抓兇手。每層樓一個測驗,答對才能上樓。
當機的驗屍課(中):法醫救不了你,要找的是流行病學家
當機驗屍三部曲第二課。進到命案現場(core dump),學會什麼是封鎖線(red zone)、第一個趕到現場的人(signal handler);然後把「法醫」升級成「流行病學家」——用全城族群資料,一舉破掉兩樁命案裡的第一樁:一口毒井(壞掉的主機)。
當機的驗屍課(下):抓住那隻 18 歲的鬼
當機驗屍三部曲完結篇。剩下那群「return 到 NULL」的命案,兇手是 GNU libunwind 藏了 18 年的競態條件——一個只有一條指令寬(約 100 皮秒)的完美作案窗。看兇器怎麼下手、用費米估算對帳發病率、以及為何這隻鬼躲了 18 年才現身。