注册
core文件分析
专栏/技术分享/ 文章详情 /

core文件分析

2026/07/16 268 2 0
摘要

Core文件分析

一、数据库版本信息

先收集一下数据库的版本以及其cpu和操作系统等信息
select id_code;
行号 id_code


1 --05134284132-20231226-213242-20081

lscpu
cat /etc/release

二、coredump文件信息

查看core文件的信息,记录下大小以及生产时间等。
cat /etc/sysctl.conf
kernel.core_pattern = /dmdata/core/core_%e_%p --数据库 fatal 时 sigterm_handler receive signal 11 ,此路径下生成core日志

Coredump文件名:core.e179555
Coredump文件大小:46863876096
Coredump文件产生时间:2026.06.11 18:00:00左右

三、Coredump文件崩溃线程堆栈信息及SQL语句
gdb dmserver core.e179555
gdb读取coredump的命令行截图:
image.png
记录当前崩溃线程堆栈:
(gdb) bt
#0 0x0000000001abe92c in assert_fun ()
#1 0x0000000001abe9f4 in sigterm_handler ()
#2 <signal handler called>
#3 0x0000000000789e24 in mem_heap_check_magic ()
#4 0x000000000078b24c in mem_heap_alloc_low ()
#5 0x00000000008899a4 in nstr_assign_with_blank_no_clear_ex ()
#6 0x0000000000e07828 in blike_av_str ()
#7 0x0000000000e0a52c in blike_av_exec ()
#8 0x0000000000e0b41c in blike_exec ()
#9 0x00000000015cdea8 in vm_nexp_run_low ()
#10 0x00000000015cf4a4 in vm_nexp_run_ign_cancel ()
#11 0x0000000001593f1c in slct2_exec_process_bdta ()
#12 0x0000000001594fc8 in slct2_exec_after_fetch ()
#13 0x0000000001595218 in slct2_exec ()
#14 0x00000000015cf724 in vm_run_low ()
#15 0x00000000015cfb48 in vm_run ()
#16 0x00000000015d04cc in vm_run_pln_low ()
#17 0x00000000015d0668 in vm_run_pln ()
#18 0x0000000001b0bd78 in ntsk_process_exec_low ()
#19 0x0000000001b0f3bc in ntsk_process_prepare_and_exec ()
#20 0x0000000001b31034 in ntsk_process_cop ()
#21 0x00000000019d7988 in uthr_db_main_for_sess ()
#22 0x0000fffbe98f88cc in ?? () from /lib64/libpthread.so.0
#23 0x0000fffbe958a12c in ?? () from /lib64/libc.so.6
(gdb)

记录当前崩溃线程号:
image.png
前面有*为当前线程,LWP后面为线程号,为3921339。

然后ctrl+c退出,生成rdc文件,搜索lwp的编号定位到core时执行的语句;sfile 生成的core文件绝对路径;dfile 生成日志文件的路径
dmrdc sfile=/dmbak/corefile/core.17955 dfile=/dmbak/corefile/14224.log

对应的SQL语句(从dmrdc的结果中找对应的3921339线程号,!#%&*^$@[线程号]):
image.png
测试单独执行SQL语句是否可重现问题,在本地或者测试环境进行测试,不要再生产环境上复现。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服