您好,我这边有一套单机部署的 openGauss 6.0.0 数据库,在运行过程中发生了异常宕机(进程挂掉),并生成了 core 文件。通过 gdb 分析调用栈,发现崩溃点位于 LLVM 编译器内部,特此求助。
环境信息:
-
数据库版本:
(openGauss 6.0.0 build aee4abd5) compiled at 2024-09-29 19:14:27 commit 0 last mr on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 10.3.0, 64-bit -
操作系统:openEuler 24.03 (LTS-SP4)
-
部署模式:单机版
-
参数情况:执行
SHOW enable_codegen;返回off;尝试查询SHOW enable_codegen_mot;提示unrecognized configuration parameter。
故障现象与日志线索:
-
宕机前:
postgresql日志中反复出现pg_statistic系统表的唯一约束冲突(duplicate key value violates unique constraint "pg_statistic_relid_kind_att_inh_index"),集中在anpm.monitor_process表的 autovacuum 过程中。 -
宕机时:产生 core 文件,使用官方 6.0.0 符号表结合 gdb 分析,发现多个线程的调用栈中出现
llvm::runIPSCCP(...),例如:text
Thread 5 (LWP 1739368): #8 0x0000000002fe3c40 in llvm::runIPSCCP(llvm::Module&, llvm::DataLayout const&, std::function<llvm::TargetLibraryInfo const& (llvm::Function&)>, llvm::function_ref<llvm::AnalysisResultsForFn (llvm::Function&)>) ()
我的疑问与求助:
-
根据公开资料,
enable_codegen已经关闭,但为什么进程依然走进了 LLVM 的编译路径(runIPSCCP)?是否是因为 MOT 相关的内部逻辑触发了 LLVM,但当前版本的enable_codegen_mot参数缺失,导致无法通过参数关闭? -
请问在 openGauss 6.0.0 版本中,针对 LLVM
runIPSCCP这种由于畸形 IR 导致的底层崩溃,是否已经有了明确的修复补丁? -
如果升级到 openGauss 6.0.3 或更新的补丁版本,是否已经包含了针对该问题的修复,或者修复了
enable_codegen_mot等 MOT 开关参数缺失的问题? -
除了修复
pg_statistic和禁用相关参数外,在当前版本下,是否有其他手段可以彻底规避该 LLVM 缺陷引发的宕机风险?