一年半才重現(xiàn)一次的bug

bug出現(xiàn)的時(shí)間點(diǎn)

  • 2015-10-13 我負(fù)責(zé)的一個(gè)使用c寫的業(yè)務(wù)進(jìn)程奔潰,使用gdb查看coredump文件發(fā)現(xiàn)是在對業(yè)務(wù)包做反序列化的時(shí)候,在序列化庫里崩潰了。
  • 當(dāng)時(shí)懷疑是業(yè)務(wù)包有問題,但也不能排除業(yè)務(wù)進(jìn)程踩內(nèi)存的可能,因?yàn)楹罄m(xù)這個(gè)奔潰也再?zèng)]出現(xiàn),且哪個(gè)時(shí)候排查手段也不多,故沒有深入去排查這個(gè)bug。
  • 2017-04-27 這個(gè)業(yè)務(wù)奔潰了兩次和2015-10-13是一樣的堆棧。

進(jìn)程“死亡現(xiàn)場”

使用gdb細(xì)看coredump文件發(fā)現(xiàn)是在反序列化解析過程中解析失敗然后跳到清理邏輯,在釋放一個(gè)數(shù)組內(nèi)存的時(shí)候引用的了空指針從而導(dǎo)致的奔潰,庫代碼在釋放內(nèi)存時(shí)沒做空指針校驗(yàn)。

排查過程

這個(gè)時(shí)候還是不能完全排除業(yè)務(wù)進(jìn)程踩內(nèi)存導(dǎo)致業(yè)務(wù)包異常的問題,但是相比2015-10-13日我們已經(jīng)添加了一個(gè)請求和應(yīng)答稽核數(shù)據(jù),這個(gè)數(shù)據(jù)會(huì)記錄客戶端所有的請求和應(yīng)答數(shù)據(jù),通過這個(gè)數(shù)據(jù)稽核查看工具發(fā)現(xiàn)對應(yīng)有問題的業(yè)務(wù)請求的確是有問題的,那么這時(shí)我們可以確認(rèn)這個(gè)bug是由客戶端導(dǎo)致的,而不是業(yè)務(wù)進(jìn)程踩了內(nèi)存。

修復(fù)問題

  • 修改反序列化庫中釋放空間的代碼,添加上空指針的檢查,規(guī)避服務(wù)端收到問題請求崩潰問題,從而導(dǎo)致業(yè)務(wù)中斷。
  • 把現(xiàn)象和數(shù)據(jù)反饋給客戶端,讓客戶端去排查問題。

思考

任何系統(tǒng)做大之后,業(yè)務(wù)數(shù)據(jù)都會(huì)通過很多環(huán)節(jié)和系統(tǒng),出現(xiàn)問題很難排查,通常很有必要對業(yè)務(wù)請求做全路徑的監(jiān)控和記錄,這樣查問題時(shí)才能事半功倍。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,159評論 25 708
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,818評論 11 349
  • 飄飄小雪蕩起薄霧 暫別時(shí) 第一次覺得想念 歸來時(shí) 第一次覺得溫暖 你若問為何? 我會(huì)說 如你般喜歡所有美好 如你般...
    一個(gè)時(shí)空閱讀 146評論 0 0
  • 第一章 瑪雅系統(tǒng)
    8733c2ed953e閱讀 183評論 0 0
  • 今天幫朋友在杭州找找租房的信息。 找了幾套后總結(jié)了以下要素。 作為租客,要租住的房子,明確以下要素: 熱鬧的VS清...
    元小由閱讀 279評論 0 0

友情鏈接更多精彩內(nèi)容