首批通过分布式安全可靠测评,为关键业务系统打造
x86 平台 OBServer 新增 AVX 校验,不支持 AVX 的机器禁止部署
更新时间:2026-05-07 08:31
问题现象
OBServer 发生 coredump,CRASH 信息显示 "sig=4" 非法指令,coredump 在 PL 执行时的 LLVM 编译编译过程中。
关键诊断信息
触发条件
PL 执行: PL 为编译执行,编译依赖三方模块 LLVM,LLVM 中标准库的使用被 vsag 库(向量库,在标准库 vector 的使用中引入了 AVX 指令)污染,导致引入非预期的 AVX 指令。
事前巡检
使用 lscpu | grep avx 命令查看 CPU 指令的支持情况,如果没有结果说明机器不支持 AVX 指令。
事后诊断
查看 CRASH 日志,如果显示 "sig=4" 说明 core dump 的原因是 Illegal instruction 非法指令。
进一步确定是否是由 AVX 指令引起需要进行反汇编查看指令确认。
问题原因
x86 平台自 OceanBase 数据库 V4.x 版本起逐渐引入了 AVX 指令,来源可能包括 OBServer、三方库、编译器的优化等,运行在不支持 AVX 指令的机型上可能发生 coredump。
问题的风险及影响
在不支持 AVX 指令的机型上使用部分 OceanBase 数据库 V4.x 版本的 OBServer 可能发生 coredump。 目前仍存在问题的版本包括如下版本:OceanBase 数据库 V4.3.3 所有版本、V4.3.4 所有版本、V4.3.5.0 所有版本。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
影响版本
OceanBase 数据库 V4.2.5 BP3(oceanbase-4.2.5.3-103000142025033110)及之后版本、V4.3.5 BP1(oceanbase-4.3.5.1-101000292025030623)及之后版本。
注意
OceanBase 数据库 V4.2.5 BP6(oceanbase-4.2.5.6-106000052025082216)及之后版本、V4.3.5 BP4(oceanbase-4.3.5.4-104000052025090918)及之后版本、V4.4.1(oceanbase-4.4.1.0-100000242025092415)及之后版本,这些版本及之后版本都不再依赖 AVX 指令了。
解决方法
OBServer 中已增加是否支持 AVX 指令的校验,自 OceanBase 数据库 V4.2.5 BP3(oceanbase-4.2.5.3-103000142025033110)/V4.3.5 BP1(oceanbase-4.3.5.1-101000292025030623)版本起,无法在不支持 AVX 指令的机器上部署。 在升级或新部署高版本 OBServer 时,请注意检查机器是否支持 AVX 指令。
注意
OceanBase 数据库 V4.2.5 BP6(oceanbase-4.2.5.6-106000052025082216)及之后版本、V4.3.5 BP4(oceanbase-4.3.5.4-104000052025090918)及之后版本、V4.4.1(oceanbase-4.4.1.0-100000242025092415)及之后版本,这些版本及之后版本都不再依赖 AVX 指令了。
规避方式
避免在不支持 AVX 指令的环境上部署上述提到的存在风险的版本。