You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 22.04连接Wacom Intuos 4D鼠标触发Xorg崩溃致注销的问题排查求助

Ubuntu 22.04连接Wacom Intuos 4D鼠标触发Xorg崩溃致注销的问题排查求助

我刚装了Ubuntu 22.04.1 LTS Desktop(x86_64,X11环境),接上了老款Wacom USB平板(型号gd-1218-u,对应"Wacom Intuos 12x18" - Intuos(1)),平板本身表现很好:笔压敏感度能直接在Inkscape里用,线条粗细会跟着压力变化,体验超棒!

但只要把配套的4D鼠标放在平板上(完全没按任何按键),系统就会出问题——黑屏一秒后直接跳转到登录界面,之前打开的所有窗口都被关闭了,这个现象我试了好多次,100%能复现。

我现在想搞清楚原因:有没有办法记录所有输入操作?类似键盘记录工具,但还要能监控鼠标/平板的移动数据?我怀疑这个鼠标可能误触发了某个快捷键组合,或者产生了一串异常的点击/移动序列导致注销,但目前没有证据。


补充排查日志

后来我在18:16:00把鼠标放到平板上,通过系统的"Logs"应用查到了Xorg崩溃的相关日志,关键内容如下:

18:16:00 Xorg: Xorg: ./WacomInterface.h:206: wcmAxisValue: Assertion `snprintf(buf, len, "%d", val) < len' failed.
18:16:00 Xorg: (EE) Backtrace:
18:16:00 Xorg: (EE) 0: /usr/lib/xorg/Xorg (OsLookupColor+0x139) [0x560544858719]
18:16:00 Xorg: (EE) 1: /lib/x86_64-linux-gnu/libc.so.6 (__sigaction+0x50) [0x7fdf3ba2a520]
18:16:00 Xorg: (EE) 2: /lib/x86_64-linux-gnu/libc.so.6 (pthread_kill+0x12c) [0x7fdf3ba7ea7c]
18:16:00 Xorg: (EE) 3: /lib/x86_64-linux-gnu/libc.so.6 (raise+0x16) [0x7fdf3ba2a476]
18:16:00 Xorg: (EE) 4: /lib/x86_64-linux-gnu/libc.so.6 (abort+0xd3) [0x7fdf3ba107f3]
18:16:00 Xorg: (EE) 5: /lib/x86_64-linux-gnu/libc.so.6 (?+0x0) [0x7fdf3ba1071b]
18:16:00 Xorg: (EE) unw_get_proc_name failed: no unwind info found [-10]
18:16:00 Xorg: (EE) 6: /lib/x86_64-linux-gnu/libc.so.6 (__assert_fail+0x46) [0x7fdf3ba21e96]
18:16:00 Xorg: (EE) 7: /usr/lib/xorg/modules/input/wacom_drv.so (?+0x0) [0x7fdf2aa80dbf]
18:16:00 Xorg: (EE) unw_get_proc_name failed: no unwind info found [-10]
18:16:00 Xorg: (EE) 8: /usr/lib/xorg/modules/input/wacom_drv.so (?+0x0) [0x7fdf2aa8160f]
18:16:00 Xorg: (EE) unw_get_proc_name failed: no unwind info found [-10]
18:16:00 Xorg: (EE) 9: /usr/lib/xorg/modules/input/wacom_drv.so (?+0x0) [0x7fdf2aa84114]
18:16:00 Xorg: (EE) unw_get_proc_name failed: no unwind info found [-10]
18:16:00 Xorg: (EE) 10: /usr/lib/xorg/modules/input/wacom_drv.so (?+0x0) [0x7fdf2aa782f8]
18:16:00 Xorg: (EE) unw_get_proc_name failed: no unwind info found [-10]
18:16:00 Xorg: (EE) 11: /usr/lib/xorg/Xorg (input_unlock+0x2e7) [0x5605448569c7]
18:16:00 Xorg: (EE) 12: /usr/lib/xorg/Xorg (OsCleanup+0x571) [0x560544859101]
18:16:00 Xorg: (EE) 13: /usr/lib/xorg/Xorg (input_unlock+0x109) [0x5605448567e9]
18:16:00 Xorg: (EE) 14: /lib/x86_64-linux-gnu/libc.so.6 (pthread_condattr_setpshared+0x513) [0x7fdf3ba7cb43]
18:16:00 Xorg: (EE) 15: /lib/x86_64-linux-gnu/libc.so.6 (__xmknodat+0x230) [0x7fdf3bb0ea00]
18:16:00 Xorg: (EE)
18:16:00 Xorg: Fatal server error:
18:16:00 Xorg: (EE) Caught signal 6 (Aborted). Server aborting
18:16:00 Xorg: (EE)
18:16:00 Xorg: (EE)
18:16:00 Xorg: (EE) Please consult the The X.Org Foundation support
18:16:00 Xorg:   at http://wiki.x.org
18:16:00 Xorg:  for help.
18:16:00 Xorg: (EE) Please also check the log file at "/home/loon/.local/share/xorg/Xorg.0.log" for additional information.
18:16:00 Xorg: (EE)
18:16:00 Xorg: (II) AIGLX: Suspending AIGLX clients for VT switch
18:16:00 Xorg: (EE) Server terminated with error (1). Closing log file.
18:16:00 Xorg: (EE) Server terminated with error (1). Closing log file.

错误分析

这个断言错误对应的是Wacom驱动里的wcmAxisValue函数,代码逻辑大概是这样的:

static inline void wcmAxisValue(const WacomAxisData *data,
enum WacomAxisType which,
char *buf, size_t len)
{
int val = 0;
int rc;

if (!wcmAxisGet(data, which, &val)) {
rc = snprintf(buf, len, "N/A");
assert(rc > 0 && (size_t)rc < len);
return;
}

rc = snprintf(buf, len, "%d", val);
assert(rc > 0 && (size_t)rc < len);
}

我猜测是4D鼠标接入后,某个轴的数据值转换成字符串后长度超过了缓冲区buf的大小len,触发了断言失败,进而导致Xorg直接崩溃退出,系统也就回到了登录界面。

另外还有个奇怪的现象:在登录界面的时候,我可以把鼠标放在平板上甚至用它选择用户,但输入密码登录后,立刻就会被踢回登录界面。

现在想请教大家:有没有什么办法能解决这个断言失败的问题?或者有没有临时的 workaround,比如禁用鼠标的某些轴,或者调整驱动的缓冲区设置?


备注:内容来源于stack exchange,提问作者loonquawl

火山引擎 最新活动