[BUG] 4.29.4 桌面端在无 AVX2 的 CPU 上启动即 SIGILL(4.29.3 正常)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 53/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Área
- build-system, desktop
Línea de trabajo
Start by comparing the 4.29.3 and 4.29.4 desktop build configuration and release workflow for the amd64 target, including any Rust target CPU flags or bundled runtime variants. Reproduce on a CPU without AVX2 or BMI2 and identify the build setting that introduces unsupported instructions. Done means the released amd64 desktop binary starts on that CPU, or release notes clearly state the minimum CPU requirement and provide a compatible build.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What happened? / 实际发生了什么?
从 4.29.3 升级到 4.29.4(AstrBot_4.29.4_linux_amd64.deb)后,桌面窗口一闪就消失,进程被 SIGILL 终止,一分钟能崩好几次,重启、重装都没用。
崩溃的只是桌面外壳 astrbot-desktop-tauri。后端和 WebUI 都是正常的:http://127.0.0.1:6185 依然能打开、能操作,功能没问题。
同一台机器换回 4.29.3,一切正常。
环境
- 系统:Linux Mint 22.3 x86_64(基于 Ubuntu 24.04),内核 7.0.0-42-generic,桌面 Xfce 4.18
- CPU:Intel Core i7-3610QM(4 核 8 线程,Ivy Bridge,2012)
- 支持的指令集:AVX / SSE4.2;没有 AVX2、BMI1、BMI2、FMA
grep -c avx2 /proc/cpuinfo返回0
结论
对 astrbot-desktop-tauri 反汇编后,能看到大量 Haswell 之后才有的指令:
| 指令 | 条数 | 引入该指令的微架构 |
|---|---|---|
vpaddd |
745 | AVX2 - Haswell (2013) |
mulx |
354 | BMI2 - Haswell (2013) |
vpcmpeqb |
117 | AVX2 |
vpbroadcastb/q/w |
53 | AVX2 |
vpaddb |
18 | AVX2 |
andn |
4 | BMI1 - Haswell |
vpermd |
2 | AVX2 |
mulx(BMI2)、andn(BMI1)、vpermd(AVX2)是 Ivy Bridge 完全不支持的指令,进程执行到就会触发 SIGILL。
所以 4.29.4 的 amd64 二进制按 x86-64-v3(AVX2 + BMI2) 编译,不是 Rust 默认的 SSE2 基线。4.29.3 在同机正常,说明这是一次构建基线变更带来的回归。
可能来源:CI 里带了 RUSTFLAGS=-C target-cpu=native 或 -C target-cpu=x86-64-v3(Actions 的 runner 是较新的 CPU,编出来在 CI 里跑得通,到老机器上就炸),或者打包的运行时是 v3 变体。
Expected behavior / 预期行为
- 把 amd64 的构建基线固定回 ‘x86-64’(或 ‘x86-64-v2’,覆盖 2009 年之后的绝大多数机器);
- 若 v3 构建是有意为之,额外提供一份兼容构建,或至少在 README / Release 里标注最低 CPU 要求;
- 至少启动时检测一次,缺指令集就给提示 —— 现在完全没有任何错误对话框,只能靠
dmesg才看得出是 SIGILL。
Steps to reproduce / 复现步骤
- 在一台不支持 AVX2/BMI2 的 x86-64 机器上安装 AstrBot_4.29.4_linux_amd64.deb
- 启动 astrbot-desktop
- 窗口出现后立即退出,dmesg 里是
traps: astrbot-desktop-tauri ... SIGILL - 对照组:卸载后装 AstrBot_4.29.3_linux_amd64.deb,同样步骤,正常
Desktop version / 桌面端版本
v4.29.4
Installation channel / 安装来源
GitHub Release installer
OS / 操作系统
Linux
Architecture / 架构
amd64
Upstream AstrBot ref used by desktop build (optional) / 桌面构建使用的上游 AstrBot Ref(可选)
No response
Logs, screenshots, and additional context / 日志、截图与补充信息
$ grep -c avx2 /proc/cpuinfo
0
$ coredumpctl list | grep -i astrbot | tail -4
Thu 2026-11-05 22:32:00 CST 4147 1000 1000 SIGILL present /usr/bin/astrbot-desktop-tauri 5.3M
Thu 2026-11-05 22:39:22 CST 4272 1000 1000 SIGILL present /usr/bin/astrbot-desktop-tauri 5.3M
Thu 2026-11-05 23:32:19 CST 4539 1000 1000 SIGILL present /usr/bin/astrbot-desktop-tauri 5.3M
Fri 2026-11-06 01:05:33 CST 2066 1000 1000 SIGILL present /usr/bin/astrbot-desktop-tauri 5.3M
$ readelf -n /usr/bin/astrbot-desktop-tauri | grep -i -A2 ISA
(无输出;Rust 默认不写 ISA note,所以这条既不能证明也不能否证,如实记录)
$ objdump -d /usr/bin/astrbot-desktop-tauri | grep -cE '\bv[a-z0-9]+[[:space:]].*%ymm'
4996
$ objdump -d /usr/bin/astrbot-desktop-tauri | grep -oE '\b(vfmadd[0-9][a-z]|vpermps|vpermd|vpermq|vpaddb|vpaddw|vpaddd|vpsubb|vpsubd|vpbroadcast[a-z]|vpblendd|vpcmpeqb|vpgatherdd|andn|bzhi|mulx|rorx|pdep|pext)\b' | sort | uniq -c | sort -rn
745 vpaddd
354 mulx
117 vpcmpeqb
42 vpbroadcastb
18 vpaddb
9 vpbroadcastq
4 andn
2 vpermd
2 vpbroadcastw
注:上面的统计没有按 %ymm 过滤,vpaddd / vpcmpeqb 里可能混有 128 位形式;
但 mulx、andn、vpermd、vpbroadcast 是 Haswell 之后才引入的指令,
Ivy Bridge 一条都不支持,结论不受此影响。
Willing to submit a PR? / 是否愿意提交 PR?
- I am willing to submit a PR to fix this issue. / 我愿意提交 PR 修复此问题。
Code of Conduct
- I agree to follow the project's Code of Conduct. / 我同意遵守项目行为准则。
- Lenguaje dominante
- Rust
- Estrellas
- 1k
- Forks
- 48
- Merge medio
- 1 d 9 h
- PR fusionados (30 d)
- 2
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de AstrBotDevs/AstrBot-desktop
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
AstrBotDevs/AstrBot-desktop#158 ·
-
[BUG] 最小化按钮点击无效 —— 无边框窗口缺少 WS_MINIMIZEBOXPosiblemente ocupada @Soulter la tomó hace 6 días. Abierto
AstrBotDevs/AstrBot-desktop#190 · 1 comentario · 2 asignados ·
-
[Bug] ArchLinux下使用KDE Plasma Wayland,appimage打包环境下白屏Posiblemente ocupada @Soulter la tomó hace 33 días. Abiertobug
AstrBotDevs/AstrBot-desktop#174 · 4 comentarios · 1 reacción · 3 asignados ·
-
[Feature]支持设置启动时默认进入 Chat 模式Quizá libre de nuevo @Soulter la tomó hace 95 días y no hay ningún pull request abierto. Abierto
AstrBotDevs/AstrBot-desktop#159 · 1 comentario · 1 reacción · 3 asignados ·
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
AstrBotDevs/AstrBot-desktop#152 · 2 comentarios · 1 reacción ·
Todos los issues de AstrBotDevs/AstrBot-desktop
Issues similares
-
agent-self
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
yologdev/yoyo-evolve#1176 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
Richard-Zhang1019/Crossbow#431 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 86/100
saschanaz/jxl-winthumb#69 ·
-
ready
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
TusanHomichi/PSIV#504 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día