星火商店版的微信在Deepinv25龙芯版可以正常运行,但是在UOSv25系统中无法运行。
以下是用WorkBuddy定位的结果(部分内容手动删改):
从星火商店安装微信,直接运行 /usr/bin/wechat(或点桌面图标)立即崩溃:
/usr/bin/wechat
*** stack smashing detected ***: terminated *** stack smashing detected ***: terminated 已放弃(核心已转储)
崩溃 100% 复现,与用户数据无关。
coredumpctl 回溯:wechat main → MMInitCrashpadExport → __libc_fork → _Fork → __stack_chk_fail 崩点在 crashpad 初始化的 fork 路径,_Fork 栈帧 canary 被破坏。
wechat main → MMInitCrashpadExport → __libc_fork → _Fork → __stack_chk_fail
_Fork
strace 显示崩溃窗口内只有 rt_sigprocmask(sigsetsize=8,透明分支)→ clone → rt_sigprocmask 三个系统调用,clone flags 正常,排除微信自身问题。
rt_sigprocmask
clone
反汇编 liblol glibc 2.42 的 _Fork,确认崩溃点在 fork 返回后的信号掩码恢复路径。
关键发现:系统同时存在两套旧世界兼容层——
app_compat
rt_sig*
pselect6
ppoll
epoll_pwait
signalfd4
TIF_ELF_OBJ_V0
la_ow_syscall
对照实验:
两套旧世界兼容层存在冲突
两种组合均已实测可完整启动微信(主进程 / crashpad / wxocr / wxplayer / WeChatAppEx 全部存活)。
# 卸载星火版微信,降级liblol: sudo apt remove -y liblol-dkms # 移除 la_ow_syscall 模块 sudo apt install -y --allow-downgrades liblol=0.1.6-1deepin1 # 降级到 UOS 官方配套版
然后以“兼容模式安装”腾讯官方loongarch64版本的微信,以及其他旧世界的deb包。
兼容环境的管理,就是distrobox的那一套,在此不再赘述。
# 确保 liblol-dkms 已装(la_ow_syscall 模块) sudo tee /etc/modprobe.d/blacklist-app-compat.conf <
No replies yet
Featured Collection
Popular Events
星火商店版的微信在Deepinv25龙芯版可以正常运行,但是在UOSv25系统中无法运行。
以下是用WorkBuddy定位的结果(部分内容手动删改):
环境
现象
从星火商店安装微信,直接运行
/usr/bin/wechat(或点桌面图标)立即崩溃:崩溃 100% 复现,与用户数据无关。
定位过程(简述)
coredumpctl 回溯:
wechat main → MMInitCrashpadExport → __libc_fork → _Fork → __stack_chk_fail崩点在 crashpad 初始化的 fork 路径,_Fork栈帧 canary 被破坏。strace 显示崩溃窗口内只有
rt_sigprocmask(sigsetsize=8,透明分支)→clone→rt_sigprocmask三个系统调用,clone flags 正常,排除微信自身问题。反汇编 liblol glibc 2.42 的
_Fork,确认崩溃点在 fork 返回后的信号掩码恢复路径。关键发现:系统同时存在两套旧世界兼容层——
app_compatkmod(kprobe 挂rt_sig*/pselect6/ppoll/epoll_pwait/signalfd4等,gate 在TIF_ELF_OBJ_V0)la_ow_syscallkmod(同样 kprobe 挂一批信号系 syscall)对照实验:
app_compat+ liblol 0.1.10 → 仍然崩app_compat+ liblol 0.1.10 → 通过 fork 初始化app_compat+ 加载la_ow_syscall+ liblol 0.1.10 → 微信完整启动根因
两套旧世界兼容层存在冲突
la_ow_syscall内核模块」设计的app_compat模块,官方配对的是 liblol 0.1.6-1deepin1(changelog 显示该包只是 Uniontech 用 GCC 12 重编译的上游 0.1.6)app_compat并不认识新版 glibc 的约定 →app_compat的 kprobe 处理器改写系统调用参数时踩坏_Fork栈 → stack smashing修复方案
两种组合均已实测可完整启动微信(主进程 / crashpad / wxocr / wxplayer / WeChatAppEx 全部存活)。
方案 A:回到 UOS 官方组合(安装官方包方便,但不兼容星火商店中的旧世界转置包)
然后以“兼容模式安装”腾讯官方loongarch64版本的微信,以及其他旧世界的deb包。
兼容环境的管理,就是distrobox的那一套,在此不再赘述。
方案 B:保留 liblol 0.1.10,屏蔽 app_compat(安装行为可与Deepin一致)