pysproto bug修复
2024-10-14 02:39:29
最近,找隔壁组的同学测试了一下我的pysproto,他们提了很多有益的建议,非常感谢。
在测试中,出现了一次诡异的coredump。当数据变大的时候,就有很大的机率遇上double free。在sproto和python sproto插件里插了一堆打印点后,发现sproto在解包的时候报错了。但是unpack的代码相当简单,下意识忽略过去了。找云大侠看了一下数据,发现的确有个长度数据错了。至于是在哪一层出错了,还是要再找找。接着我们尝试了直接用lua版的sproto解包和打包,都没有问题。包的收发也是在单机进行的,不存在问题。于是又绕回到unpack上去了。仔细想想,数据越来越大的时候才会出问题。有可能跟默认缓冲区的大小有关,这个大小设置为1024了,难道Realloc的时候出错了?
放狗搜索了一下,发现Realloc的用法的确有问题。对于内存已满的情况,没有做出错处理,之前的指针也被覆盖掉了,造成内存泄漏。改好这一块后发现,为sproto_unpack传入新的缓冲区的时候,忘记更新缓冲区dstsz这个变量了,导致缓冲区足够大,而sproto会认为不够。。增加单元测试后已修复~
最新文章
- nodejs、npm、grunt——名词解释
- js乱码解决方法
- 斯坦福iOS7公开课11笔记及演示Demo&;访问HTTPS链接下载数据
- <;Valve className=";org.apache.catalina.valves.AccessLogValve"; directory=";logs"; prefix=";localhost_acce
- swift1.2语言函数和闭包函数介绍
- 一看就懂的Android APP开发入门教程
- VLC说明
- Proxy settings in TortoiseSVN and command line svn client
- 中国广核集团:BPM与ERP紧密结合
- MongoDB 创建数据库
- omDialog设计造成控件无法后台取值
- C#修改下拉框选项的高度
- jQuery中实现自定义方法的扩展
- new Integer(1)和Integer.valueOf(1)的区别
- HDU 6121 Build a tree(找规律+模拟)
- java 分页导出百万级数据到excel
- Oracle_数据库表的约束
- Go语言基础之结构体
- Spring框架基础(下)
- 关于resin的illegal utf8 encoding at (190)解决方式
热门文章
- background复合属性详解(上):background-image
- E. Vasya and Beautiful Arrays
- java.io.FileNotFoundException: ...\ibs\library-1.0.17.jar (系统找不到指定的文件。)
- DIV的不能包住子集解决办法
- android 混淆导致友盟反馈出错
- js动画之同时运动
- css初始化
- C++ 11 lambda
- WIN7-64位安装PLSQL-Developer步骤
- Spring Security 从配置入门 学习讲解。刽子手------------securityConfig.xml