背黑锅的vlc(一):使用x11渲染出错
来源:互联网 发布:怎么样做淘宝网店 编辑:程序博客网 时间:2024/05/14 10:42
PC+linux桌面环境下,占用率最高的播放器非VLC莫属了。
VLC是开源播放器,它的解码大部分依赖ffmpeg开源库,在PC+linux下主要有三种渲染方式:x11(X server原生支持的), Glx(使用opengl加速), xvideo(Nvida加速)。
因为VLC依赖第三方库,很多时候,第三方库的错误也被算在VLC头上。
最近经常遇到的VLC的崩溃现象,我使用的是vlc-1.0.1版本,rhel5.5环境下。
日志如下:
打开coredump,ulimit -c unlimited,重现错误。
使用命令查看堆栈,如下
gdb ./vlc ./core.123456
bt
可以发现,错误是,Xsync()引起的。
照例,先看看新的vlc版本有没有解决。
看了一下vlc-2.0.1,新版本引入了xcb,xcb使用下面的函数,
xcb_generic_error_t *e = xcb_request_check (sys->conn, ck);
检查显示成功与否,不成功,释放掉 pic{picture_Release (pic);},然后显示下一帧图片。
我的rhel5.5太旧了,尝试安装xcb开发环境还需要更新XFree86(X server的实现版本)。不想折腾。
再回头看看堆栈,#19是一个vlc注册进去的错误处理函数。
这个函数中,vlc调用XGetErrorText,得到详细错误信息,并打印出来了。
然后,“XSetErrorHandler(NULL);”调用了默认错误处理函数XDefaultError(),它调用了exit(),进程退出。
好了,我的想法是:
打印详细错误信息,
参考vlc-2.0.1,不调用默认错误处理函数,而是直接返回(return 0;)。
不知道这样能不能达到目的?
明天再试。
土鳖抗铁牛
- 背黑锅的vlc(一):使用x11渲染出错
- 背黑锅的vlc(三):X11渲染出错
- 背黑锅的vlc(二):ffmpeg崩溃和漏洞
- 背黑锅的vlc(四):linux下调试进程死锁
- Rails使用plain渲染出错的原因
- X11相关(一)
- 背黑锅
- 维棠下载flv出错 kmplayer背黑锅
- vlc的结构分析(一)
- 编译VLC,出错的解决方案之一
- vlc代码的使用
- VLC使用的问题
- 神器 Qemu 一 利用X11 渲染将qmeu 跑在Windows 上
- 不使用X11显示窗体的方法
- VLC源代码分析(一)
- vlc学习总结(一)
- 三维场景的渲染优化(一)
- Clutter的图形渲染BackEnd(一)
- How to add row numbers to DataGridView
- SpringMVC中JSP取不到ModelAndView的数据原因
- Android开源库集锦
- UVA 375Inscribed Circles and Isosceles Triangles
- 漫谈个性化Query推荐
- 背黑锅的vlc(一):使用x11渲染出错
- UVa - 409 - Excuses, Excuses!
- Java深度历险(一)——Java字节代码的操纵
- Button 对象
- 多项式拟合
- (Jquery Ajax Call )Post 一个Form去后台以及AJAX call后DIV重新加载
- Hibernate的10个常见面试问题及答案
- Android adb “push pull”中文支持解决方案
- dom4j详解之读取XML文件