Loading...
Segmentation fault原因请问有遇到我这种情况的么
WindForest  发布于 06/28 12:59
浏览 63
使用Hi3516EV200只进行H264编码,程序和音频无关,且未运行音频相关函数。
程序每次采集3秒定长视频编码存入一个链表形式的缓冲区内,再由另一个线程从缓冲区中取出。
这一过程中会极低概率触发Segmentation fault,使用gdb调试输出信息如下:
[code]Program received signal SIGSEGV, Segmentation fault.
0xb6f2d478 in free () from /lib/libc.so.0
(gdb) bt
#0  0xb6f2d478 in free () from /lib/libc.so.0
#1  0x0003e09c in MPI_SysUnRegisterBinder ()
#2  0x00032cd0 in MPI_AO_Exit ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) [/code]

这其中出现了两个函数MPI_SysUnRegisterBinder 和MPI_AO_Exit ,可是我程序中没有使用过这两个函数,在MPP4.0参考手册中也没有对这两个函数的说明,这是怎么回事呢?
收藏0
2个回答
WindForest 回答于 06/28 13:09
[code]Program received signal SIGSEGV, Segmentation fault.
0x0003dfc8 in MPI_SysUnRegisterBinder ()
(gdb) bt
#0  0x0003dfc8 in MPI_SysUnRegisterBinder ()
#1  0x00030558 in MPI_ADEC_Exit ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) [/code]

gdb多次捕获到的信息,段错误位置竟然不一样。
我程序是每次指令线程给编码线程(编码线程为主线程)一个指令之后,编码线程初始化MPP并进行定长编码,把码流缓存到缓冲区,然后退出MPP等待下一次指令这样子,kangdb的信息是在退出MPP的时候跑飞了???
0
WindForest 回答于 06/28 19:55
结贴,码流包地址超界访问导致。
果然是低级错误呢...我现在的心情如何表示呢?大概是配合着我头像那个表情在心底喊出:啊!!!!!这样子..
0
内容存在敏感词
添加附件:文件小于20M 文件格式必须为doc,docx,xls,xlsx,pdf,ppt,pptx,txt,zip,rar,tar,7z
上传
文件格式必须为doc,docx,xls,xlsx,pdf,ppt,pptx,txt,zip,rar,tar,7z
确定要删除此文章、专栏、评论吗?
确定
取消

详细的问题描述有助于平台快速解决问题

屏幕截图
问题描述