资讯专栏INFORMATION COLUMN

一年半才重现一次的bug

娣辩孩 / 2905人阅读

摘要:修复问题修改反序列化库中释放空间的代码,添加上空指针的检查,规避服务端收到问题请求崩溃问题,从而导致业务中断。把现象和数据反馈给客户端,让客户端去排查问题。

bug出现的时间点

2015-10-13 我负责的一个使用c写的业务进程奔溃,使用gdb查看coredump文件发现是在对业务包做反序列化的时候,在序列化库里崩溃了。

当时怀疑是业务包有问题,但也不能排除业务进程踩内存的可能,因为后续这个奔溃也再没出现,且哪个时候排查手段也不多,故没有深入去排查这个bug。

2017-04-27 这个业务奔溃了两次和2015-10-13是一样的堆栈。

进程“死亡现场”

使用gdb细看coredump文件发现是在反序列化解析过程中解析失败然后跳到清理逻辑,在释放一个数组内存的时候引用的了空指针从而导致的奔溃,库代码在释放内存时没做空指针校验。

排查过程

这个时候还是不能完全排除业务进程踩内存导致业务包异常的问题,但是相比2015-10-13日我们已经添加了一个请求和应答稽核数据,这个数据会记录客户端所有的请求和应答数据,通过这个数据稽核查看工具发现对应有问题的业务请求的确是有问题的,那么这时我们可以确认这个bug是由客户端导致的,而不是业务进程踩了内存。

修复问题

修改反序列化库中释放空间的代码,添加上空指针的检查,规避服务端收到问题请求崩溃问题,从而导致业务中断。

把现象和数据反馈给客户端,让客户端去排查问题。

思考

任何系统做大之后,业务数据都会通过很多环节和系统,出现问题很难排查,通常很有必要对业务请求做全路径的监控和记录,这样查问题时才能事半功倍。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/9956.html

相关文章

  • 从国企到互联网,个初入职场将近年半工作经验程序员的「得」与「失」

    摘要:写在前面年月日,我只身一人来到北京,开始人生中的第一份工作,在一家国企从事软件开发工作。因为现在晚饭都是在公司吃,如果不是刷朋友圈,我是不知道北京哪天的夕阳又刷屏了的,因此错过了很多美丽的瞬间,也算一点遗憾吧。 ...

    不知名网友 评论0 收藏0
  • 分布式系统测试那些事儿——错误注入

    摘要:本话题系列文章整理自第期刘奇分享的深度探索分布式系统测试议题现场实录。如果没有做错误路径的测试,那很简单的一个问题,现在假设走到其中一条错误路径了,整个系统行为是什么这一点不知道是很吓人的。这不仅仅是硬件的监控,也可以认为是做错误的注入。 本话题系列文章整理自 PingCAP NewSQL Meetup 第 26 期刘奇分享的《深度探索分布式系统测试》议题现场实录。文章较长,为方便大家...

    caspar 评论0 收藏0
  • 分布式系统测试那些事儿——错误注入

    摘要:本话题系列文章整理自第期刘奇分享的深度探索分布式系统测试议题现场实录。如果没有做错误路径的测试,那很简单的一个问题,现在假设走到其中一条错误路径了,整个系统行为是什么这一点不知道是很吓人的。这不仅仅是硬件的监控,也可以认为是做错误的注入。 本话题系列文章整理自 PingCAP NewSQL Meetup 第 26 期刘奇分享的《深度探索分布式系统测试》议题现场实录。文章较长,为方便大家...

    Clect 评论0 收藏0
  • 想让安卓app不再卡顿?看这篇文章就够了

    摘要:那么问题就是如何有效检测主线程的卡顿发生,目前业界两种主流有效的监控方式如下,在卡顿监控方式实现这篇文章中我将分别详细阐述这两者的特点和实现。欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由likunhuang发表于云+社区专栏 实现背景 应用的使用流畅度,是衡量用户体验的重要标准之一。Android 由于机型配置和系统的不同,项目复杂App场景丰富,代码多人参与迭代历...

    Tychio 评论0 收藏0
  • 笔记|软件调试的技巧

    摘要:在软件世界里,观察意味着设置断点添加调试语句监视程序值以及检查内存在医学领域,需要测试血样和进行光透视。福尔摩斯,最后一案如果你不修复,它不会自动消失。修复解决问题的能力,是软件工程师的核心竞争力之一。 这篇文章是《调试九法:软硬件错误的排查之道》的阅读笔记。这本书的主旨,是介绍如何修复bug:找出bug发生的原因、并给出修复方案。 调试bug的九个规则列举如下,建议将这个清单打印出来...

    DirtyMind 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<