[BUG] 4.29.4 桌面端在无 AVX2 的 CPU 上启动即 SIGILL(4.29.3 正常)
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 53/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Lĩnh vực
- build-system, desktop
Hướng nghiên cứu
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.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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. / 我同意遵守项目行为准则。
- Ngôn ngữ chính
- Rust
- Star
- 1k
- Fork
- 48
- Merge trung bình
- 1 ngày 9 giờ
- Pull request đã merge (30 ngày)
- 2
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của AstrBotDevs/AstrBot-desktop
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
AstrBotDevs/AstrBot-desktop#158 ·
-
[BUG] 最小化按钮点击无效 —— 无边框窗口缺少 WS_MINIMIZEBOXCó thể đã có người làm @Soulter đã nhận 6 ngày trước. Đang mở
AstrBotDevs/AstrBot-desktop#190 · 1 bình luận · 2 người được giao ·
-
[Bug] ArchLinux下使用KDE Plasma Wayland,appimage打包环境下白屏Có thể đã có người làm @Soulter đã nhận 33 ngày trước. Đang mởbug
AstrBotDevs/AstrBot-desktop#174 · 4 bình luận · 1 reaction · 3 người được giao ·
-
[Feature]支持设置启动时默认进入 Chat 模式Có thể làm lại được @Soulter đã nhận 95 ngày trước và không có pull request nào đang mở. Đang mở
AstrBotDevs/AstrBot-desktop#159 · 1 bình luận · 1 reaction · 3 người được giao ·
-
enhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
AstrBotDevs/AstrBot-desktop#152 · 2 bình luận · 1 reaction ·
Tất cả issue của AstrBotDevs/AstrBot-desktop
Issue tương tự
-
agent-self
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
yologdev/yoyo-evolve#1176 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100
Richard-Zhang1019/Crossbow#431 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 86/100
saschanaz/jxl-winthumb#69 ·
-
ready
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
TusanHomichi/PSIV#504 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày