[ffmpeg][goav][issues] goav Dictionary crash double free

用goav 配置avoption时的一个bug
github.com/giorgisio/goav/issues/57

code :

 var dict *avutil.Dictionary = &avutil.Dictionary{}er := dict.AvDictSet("profile", "main", 0)if er < 0 {log.Critical("AvDictSet failed")return }er = dict.AvDictSet("level", "51", 0)if er < 0 {log.Critical("AvDictSet failed")return }fmt.Println(dict.AvDictCount())fmt.Println(dict.AvDictGet("profile", nil, 0))fmt.Println(dict.AvDictGet("level", nil, 0))err = context_enc.AvcodecOpen2(codec_enc, (**avcodec.Dictionary)(unsafe.Pointer(&dict)))if err < 0 {log.Critical("AvcodecOpen2 failed.")return}

double free or corruption (out)
SIGABRT: abort
PC=0x7f3a6082aed7 m=0 sigcode=18446744073709551610

goroutine 0 [idle]:
runtime: unknown pc 0x7f3a6082aed7
stack: frame={sp:0x7fff8f1abb70, fp:0x0} stack=[0x7fff8e9ad228,0x7fff8f1ac250)
00007fff8f1aba70: 0000000000000000 000000000227fbc0
00007fff8f1aba80: 00000000ffffffff 00007fff8f1abae8
00007fff8f1aba90: 00007f3a60cc3030 00007f3a623509f0
00007fff8f1abaa0: 00007f3a60cc5c25 0000000000000017

根本原因应该是没有dict.h里面没有AVDictionary的定义,添加一个alloc函数可以解决这个问题。

然后这样分配dict空间:

 var dict *avutil.Dictionary = avutil.AvDictAlloc()er := dict.AvDictSet("profile", "constrained_baseline", 0)if er < 0 {log.Critical("AvDictSet failed")return }er = dict.AvDictSet("level", "52", 0)if er < 0 {log.Critical("AvDictSet failed")return }fmt.Println(dict.AvDictCount())//fmt.Println(dict.AvDictGet("profile", nil, 0))//fmt.Println(dict.AvDictGet("level", nil, 0))//dict.AvDictFree()err = context_enc.AvcodecOpen2(codec_enc, (**avcodec.Dictionary)(unsafe.Pointer(&dict)))if err < 0 {log.Critical("AvcodecOpen2 failed.")return}fmt.Println(dict.AvDictCount())

[ffmpeg][goav][issues] goav Dictionary crash double free相关推荐

  1. How to create a Python dictionary with double quotes as default quote format?

    couples = [['jack', 'ilena'], ['arun', 'maya'], ['hari', 'aradhana'], ['bill', 'samantha']] pairs = ...

  2. XBMC源代码分析 4:视频播放器(dvdplayer)-解码器(以ffmpeg为例)

    XBMC分析系列文章: XBMC源代码分析 1:整体结构以及编译方法 XBMC源代码分析 2:Addons(皮肤Skin) XBMC源代码分析 3:核心部分(core)-综述 本文我们分析XBMC中视 ...

  3. 说一说ffmpeg到处都在使用的ff_thread_once函数

    从名字就能知道ff_thread_once函数的作用,就是保证在多线程调用的时候,函数只执行一次 FFmpeg中是使用经典的double check来保证函数只执行一次的,我们来跟踪下函数看下具体的实 ...

  4. Go语学习笔记 - 调用ffmpeg-api实现音频重采样

    目录 前言 环境部署 代码 总结 前言 最近对golang处理音视频很感兴趣,对golang音视频常用库goav进行了一番研究.自己写了一个wav转采样率的功能.给大家分享一下,中间遇到了不少坑,解决 ...

  5. 机器人学习--路径规划--A*算法实现

    参考网址:https://www.redblobgames.com/pathfinding/a-star/implementation.html 扩展:https://www.redblobgames ...

  6. sourcetree安装遇到的各种坑

    安装 SourceTree 时,需要使用atlassian授权,多数会卡到这一步,网上给出的办法跳过 atlassian账号 授权方法 安装之后,转到用户本地文件夹下的 SourceTree 目录,没 ...

  7. Expression Tree 上手指南 (二)

    上回我们说到Expression Tree是一种表示编程语言中"表达式"概念的树状数据结构,并且学习了从Lambda表达式自动生成表达式树的C#语法.那么它到底有什么用呢?其实上一 ...

  8. 广度优先搜索(BreadthFirstSearch) 迪克斯特拉算法 (Dijkstra's algorithm)

    BFS可回答两类问题: 1.从节点A出发,有前往节点B的路径吗? 2.从节点A出发,前往节点B的哪条路径经过的节点最少? BFS中会用到"队列"的概念.队列是一种先进先出(FIFO ...

  9. C#——《C#语言程序设计》实验报告——Windows桌面编程

    一.实验目的 熟悉使用WPF进行界面编程的基本过程: 掌握WPF布局.控件.事件的使用. 二.实验内容 使用WPF技术,进行合理布局,设计一个窗体应用程序,完成一些常用度量单位的转换,基本模板如下图: ...

  10. Masuit.Tools,一个免费的轮子

    开源地址: https://gitee.com/masuit/Masuit.Tools 包含一些常用的操作类,大都是静态类,加密解密,反射操作,动态编译,权重随机筛选算法,简繁转换,分布式短id,表达 ...

最新文章

  1. nginx是什么,如何使用
  2. 如何使用Openfiler为VMware ESX设置一个免费的iSCSI或NAS储存系统
  3. mysql-5.7.20实用下载、安装和配置方法,以及简单操作
  4. 华为手表用鸿蒙了吗,华为鸿蒙都2.0了,手机还不能用吗?
  5. 通过经度纬度得到距离
  6. 如何分析SAPPSPRO-S_MAT_ENHANC_COMM问题
  7. ESLint 规则详解
  8. 改写教科书!Science揭示:为什么你体内的癌细胞没发展成癌症?
  9. VS2010下多线程的调试(来自MSDN)
  10. Java 面向对象 --单例模式
  11. Android 系统(42)---Android7.0 PowerManagerService亮灭屏分析(三)
  12. Spring框架学习(二)
  13. fread 单独测试没有问题 在正式项目里面丢数据 可能是系统资源不足 预读出了问题
  14. mysql 打印_揭秘MySQL 主从环境中大事务的传奇事迹
  15. 2017c语言国二试题,国家计算机c语言二级考试试题
  16. 视频动态滚动水印制作,滚动的水印字幕
  17. android面试题整理(上)
  18. Maya创建重力动力模型教程!
  19. opencv与PIL互转
  20. 可怕!只因写了一段爬虫代码,全公司200人被警察一锅端!

热门文章

  1. 安卓手机抓包小程序https请求 (该网站安全证书有问题解决办法)
  2. mysql 运维审计_【MySQL运维】MySQL审计管理
  3. 计算机图形学中划线的程序,计算机图形学划线实验报告
  4. HDU 1880 魔咒词典(字符串hash)
  5. CentOS 7超详细安装与网络配置
  6. JavaFX.控件讲解
  7. ansiblea基本使用
  8. 深度解析种子轮、天使轮、PreA轮、A轮、B轮、C轮的内涵
  9. 两平面平行方向向量关系_方向向量和法向量的关系
  10. Objective-C 程序设计(第4版)