Ubuntu Server 20.04 x64运行Qt6 EGLFS程序报0x300b错误如何解决
解决方案
错误码说明
0x300b对应的EGL标准错误为EGL_BAD_ALLOC,表示驱动无法为EGL surface分配所需资源,结合前置的DRI2: failed to authenticate警告,问题核心出在DRI2渲染通路的权限校验或资源分配环节。
可按以下步骤逐一排查:
- X11权限校验
如果你是在安装了Xorg的环境下运行程序,先执行命令开放本地用户的X服务访问权限:
远程ssh运行的话需要额外设置DISPLAY变量:xhost +local:
配置完成后重新运行程序测试。export DISPLAY=:0 - 升级Mesa驱动
你当前使用的Mesa 21.0版本对Qt6 EGL通路的适配存在已知问题,可升级到最新稳定版Mesa:
升级完成后重启系统再测试。sudo add-apt-repository ppa:kisak/kisak-mesa sudo apt update && sudo apt upgrade -y - 指定eglfs后端
Qt6 eglfs默认优先使用KMS/DRM后端,如果你在有X11的环境下运行,可强制指定用x11后端:
纯无桌面环境下检查LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/user/Qt6_libs ./myproject -platform eglfs:device=x11/dev/dri/目录是否存在card0、renderD128设备节点,不存在则说明显卡驱动未正常加载。 - 检查设备权限
执行命令查看DRI设备的权限配置:
确认设备组为video、权限为660,配置异常可临时修改测试:ls -l /dev/dri/sudo chmod 666 /dev/dri/* - root权限测试
以上步骤都无效的话,临时用root权限运行程序排查权限问题:
若root可正常运行,说明普通用户的polkit或udev规则配置存在异常,可针对性调整对应规则。sudo LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/user/Qt6_libs ./myproject -platform eglfs
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

