虚拟机VMware + OpenGL+ 报错 “context mismatch in svga_sampler_view_destory”
一、问题介绍
近日发现开发的视频流播放器在windows下运行正常,但同一份代码在虚拟机麒麟系统下编译后运行则存在内存泄露问题。并且诡异的是虽然系统可用内存不断减少,但单看我的视频流播放器占用内存并不会上升。经过一段时间分析后,发现虚拟机中的软件运行时会多报一个提示,即 “context mismatch in svga_sampler_view_destory”,而这就是问题所在。
二、解决问题
根据国外某大佬的说法,该问题可能是VMware对OpenGL3.3的支持存在问题导致的[^1],那么,对此问题,解决方法有如下两种:
方法1:关闭VMware中的“加速3D图形”选项
方法2:禁用OpenGL3.3,回退到使用OpenGL2.1
$ echo "export SVGA_VGPU10=0" >> ~/.bashrc
参考文献
[^1]Error “context mismatch in svga_sampler_view_destroy” running GUI programs on Ubuntu in a VM https://stackoverflow.com/questions/47150110/error-context-mismatch-in-svga-sampler-view-destroy-running-gui-programs-on-ub