应用程序运行***buffer overflow detected*** terminated Aborted异常退出问题
来源:互联网 发布:windows系统 编辑:程序博客网 时间:2024/06/09 18:30
今天运行程序,改了一段代码!然后每次一运行程序就异常退出,打印如下信息:
*** buffer overflow detected ***: ./shm_costomer terminated
Aborted
根据单词的意思是缓存越界的问题!自己反复检查了自己修改的那部分代码,发现不存在这种情况!然后直接把自己这段代码屏蔽掉重新编译再运行,发现程序还是挂掉了!但是这个程序之前几个月都运行的好好的,就在我运行的上一分钟还是运行的好好的!我开始怀疑是硬件出问题了或是板子上的linux系统抽风了!取消屏蔽部分!重新编译,然后下载到另一板子上去运行,妈蛋,能正常运行!一样的板子一样的系统!然后我又在我的板子上跑测试程序,也可以!跑其他的应用程序也是可以正常运行!虽然问题百思不得其解,但是具体原因应该能确定90%的可能是软件部分的BUG,但是为什么是突然一下子爆发出来了呢?之前为啥一直能正常运行呢?
百度了下这个错误,然来是个老生常谈的问题!原来有很多前辈们也遇到过!
自己总结了一下问题可能出在两个地方:
1. GCC编译器版本问题
2. 程序中的缓冲区写超出了其长度的内容(比如使用了C库中不安全的函数,没有对输入的参数进行合法性检测,像strcpy、sprintf、strcat、scanf等)
首先我基本能排除编译器的问题,因为编译其他的程序能运行,而且我编译的这个程序在另一个相同的板子上也能运行!而且编译器出问题的可能性也不大
现在问题基本能确定是在我程序部分了!但是很奇怪,我的板子运行报错,在另一个相同的板子上能正确运行!
报错截图:框框里面的部分是我调试打印的一些信息可忽略!
屏蔽或不屏蔽我增加的那部分代码效果都一样!那么如果有问题基本可以确定问题是在其他部分!
程序中使用的缓存数组比较多,自己写的代码,这个自己基本可以确定缓存数组出现溢出越界的问题可能性很小,因为使用都做了合法性检测,而且是经过反复测试的,一个一个的查我估计查一天也不见得查完!百度了一下网上有很多缓存溢出检测工具!这是查找问题的一种办法!再查一点我就这么做了!鉴于我的程序中使用了类似strcat函数,还有sprintf函数等,我首先还是查了哈程序中哪些地方使用了这些函数!然后一下子就发现了自己给自己挖的坑,粗心大意某个地方掉了一个04,还好问题暴露的早,发现的及时!这里截个图:
第二个红色箭头部分,比如把整型数2016转变成字符型2016,实践证明图上写法是不安全的,应该这样:sprintf(SYear,"%04d",year); 或者 sprintf(SYear,"%4d",year);//转化为字符串类型
这里%d 和 %04d 的区别:
只把有符号整型year转换为字符串,长度不确定
把有符号整形year转化为字符长度为4的字符串,长度确定
改好之后问题就over了!
这个问题是突然冒出来的!百度百科这个做的还是挺给力!这里顺便还了解了缓存区溢出的一些相关知识!
百度百科:缓存区溢出
- 应用程序运行***buffer overflow detected*** terminated Aborted异常退出问题
- 应用程序运行***buffer overflow detected*** terminated Aborted异常退出问题
- buffer overflow detected错误
- buffer overflow detected问题解决及gcc-4.1安装
- 关于buffer overflow detected 程序崩溃的思考
- 运行DVBviewer出现Buffer overrun detected!
- buffer overflow
- buffer overflow
- Buffer Overflow
- Buffer overflow
- Buffer Overflow
- *** stack smashing detected ***: ./braodcast_udp terminated
- gtags运行时报错 input buffer overflow 解决办法
- Android 退出应用程序问题
- Buffer overrun detected!
- Buffer overrun detected!
- 系列C++问题请教高手之九:buffer overflow
- 解决XCode 7 AddressSanitizer: heap-buffer-overflow的问题
- Redis的安装与使用(单节点)
- iOS开发之证书类别
- Caffe —— Deep learning in Practice 深度学习实践
- 支付宝支付流程
- Codeforces 676C Vasya and String (两点法)
- 应用程序运行***buffer overflow detected*** terminated Aborted异常退出问题
- iOS QQ分享sdk文档以及sdk下载地址
- 6. SpringMVC_RequestMapping_Ant 路径
- 验证(正则表达式)工具类
- 大数乘法、大数加法实现
- 更改数据库中所有表中所有相同字段的长度或数据类型
- Longest Common Prefix
- 深度学习框架Caffe教程和安装指南 Caffe Tutorial
- json工具类