🔗 Squid 3.4 及更高版本上的非法指令错误
🔗 摘要
Squid 3.4 及更高版本在某些半虚拟化系统,甚至一些声称完全虚拟化的系统(至少目前已确认 KVM、Xen 和 Xen 衍生产品)上运行,在启动后不久就会因非法指令错误而崩溃。
🔗 症状
- 在 Intel 兼容处理器上的虚拟机上,Squid 在启动后立即因非法指令错误而崩溃
🔗 解释
Squid 构建系统默认使用 ` -march=native ` gcc 选项来优化生成的二进制文件。不幸的是,某些(半)虚拟化系统不支持它们所声称的全部指令集。编译器不知道这一点,因此会生成触发此错误的指令。
🔗 规避方法
这些优化对于拥有功能齐全的 squid 有所帮助,但并非必需,尤其是在 ia64/amd64 平台上。可以通过向 configure 脚本提供 --disable-arch-native 选项来覆盖检测到的默认值。
类别: 知识库
导航: 站点搜索、站点页面、类别、🔼 向上