You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用glXChooseFBConfig时触发X_ChangeProperty的BadValue错误排查

问题分析与修复

错误根源

你遇到的BadValue错误并非来自defaultScreen,而是设置窗口标题的xcb_change_property调用中传入了非法的format参数。

从错误信息的Major opcode of failed request: 18 (X_ChangeProperty)可以确认,错误发生在修改窗口属性的步骤。你当前代码中这一行的format参数传了0:

xcb_change_property(
    m_pstate->connection,
    XCB_PROP_MODE_REPLACE,
    m_pstate->window,
    XCB_ATOM_WM_NAME,
    XCB_ATOM_STRING,
    0,  // 非法参数
    appName.length(),
    appName.c_str());

XCB的xcb_change_property要求format参数只能取8、16、32三个值,对应数据的位宽。对于XCB_ATOM_STRING类型的字符串数据,必须传入8(因为字符串是8位字节),传0直接触发参数范围错误。

修复代码

将xcb_change_property调用中的format参数从0改为8即可解决问题:

xcb_change_property(
    m_pstate->connection,
    XCB_PROP_MODE_REPLACE,
    m_pstate->window,
    XCB_ATOM_WM_NAME,
    XCB_ATOM_STRING,
    8,  // 修正为合法的format值
    appName.length(),
    appName.c_str());

额外说明

你提到的defaultScreen参数是正常的,错误发生在GLX初始化代码之前,和OpenGL部分的逻辑无关。修正上述参数后,窗口标题设置会正常执行,后续的GLX初始化流程也能继续推进。

内容的提问来源于stack exchange,提问作者delta64

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 13:44:50