我想问一下,从下面的日志中我们是否可以说 Mysql 崩溃是由于我们为 Mysql 自定义的库造成的?
Sep 26 15:24:30 mysqld: /usr/lib/mysql/plugin/my_lib_discounts.so(_ZN13CDiscountCalcD1Ev+0x52)[0x7f5da35439da]
Sep 26 15:24:30 mysqld: /usr/lib/mysql/plugin/my_lib_discounts.so(my_lib_discountsAgg_deinit+0x31)[0x7f5da35431be]
完整日志:
Sep 26 15:24:30 mysqld: Thread pointer: 0x7f5d980ab690
Sep 26 15:24:30 mysqld: Attempting backtrace. You can use the following information to find out
Sep 26 15:24:30 mysqld: where mysqld died. If you see no messages after this, something went
Sep 26 15:24:30 mysqld: terribly wrong...
Sep 26 15:24:30 mysqld: stack_bottom = 7f5da2d9de88 thread_stack 0x80000
Sep 26 15:24:30 mysqld: /usr/sbin/mysqld(my_print_stacktrace+0x2e)[0x7f5f02247ade]
Sep 26 15:24:30 mysqld: /usr/sbin/mysqld(handle_fatal_signal+0x493)[0x7f5f020fe253]
Sep 26 15:24:30 mysqld: /lib/libpthread.so.0(+0xeff0)[0x7f5f018b3ff0]
Sep 26 15:24:30 mysqld: /lib/libc.so.6(gsignal+0x35)[0x7f5f00164ed5]
Sep 26 15:24:30 mysqld: /lib/libc.so.6(abort+0x180)[0x7f5f00167ce0]
Sep 26 15:24:30 mysqld: /lib/libc.so.6(+0x682db)[0x7f5f0019b2db]
Sep 26 15:24:30 mysqld: /lib/libc.so.6(+0x71b36)[0x7f5f001a4b36]
Sep 26 15:24:30 mysqld: /lib/libc.so.6(cfree+0x6c)[0x7f5f001a98ac]
Sep 26 15:24:30 mysqld: /usr/lib/mysql/plugin/my_lib_discounts.so(_ZN13CDiscountCalcD1Ev+0x52)[0x7f5da35439da]
Sep 26 15:24:30 mysqld: /usr/lib/mysql/plugin/my_lib_discounts.so(my_lib_discountsAgg_deinit+0x31)[0x7f5da35431be]
Sep 26 15:24:30 mysqld: /usr/sbin/mysqld(_ZN11udf_handler7cleanupEv+0x31)[0x7f5f02156bc1]
Sep 26 15:24:30 mysqld: /usr/sbin/mysqld(_ZN12Item_udf_sum7cleanupEv+0x10)[0x7f5f021863c0]
Sep 26 15:24:30 mysqld: /usr/sbin/mysqld(_ZN4JOIN7destroyEv+0x17e)[0x7f5f020183be]
Sep 26 15:24:30 mysqld: /usr/sbin/mysqld(_ZN13st_select_lex7cleanupEv+0x22)[0x7f5f0205feb2]
Sep 26 15:24:30 mysqld: /usr/sbin/mysqld(_Z12mysql_selectP3THDPPP4ItemP10TABLE_LISTjR4ListIS1_ES2_jP8st_orderSB_S2_SB_yP13select_resultP18st_select_lex_unitP13st_select_lex+0x233)[0x7f5f0202af53]
Sep 26 15:24:30 mysqld: /usr/sbin/mysqld(_Z13handle_selectP3THDP3LEXP13select_resultm+0x174)[0x7f5f02030954]
Sep 26 15:24:30 mysqld: /usr/sbin/mysqld(+0x30a287)[0x7f5f01feb287]
Sep 26 15:24:30 mysqld: /usr/sbin/mysqld(_Z21mysql_execute_commandP3THD+0x1be4)[0x7f5f01ff01b4]
Sep 26 15:24:30 mysqld: /usr/sbin/mysqld(_Z11mysql_parseP3THDPcjP12Parser_state+0x246)[0x7f5f01ff2e26]
Sep 26 15:24:30 mysqld: /usr/sbin/mysqld(_Z16dispatch_command19enum_server_commandP3THDPcj+0x1d42)[0x7f5f01ff53d2]
Sep 26 15:24:30mysqld: /usr/sbin/mysqld(_Z24do_handle_one_connectionP3THD+0x10e)[0x7f5f0209724e]
Sep 26 15:24:30 mysqld: /usr/sbin/mysqld(handle_one_connection+0x50)[0x7f5f02097370]
Sep 26 15:24:30 mysqld: /lib/libpthread.so.0(+0x68ca)[0x7f5f018ab8ca]
Sep 26 15:24:30 mysqld: /lib/libc.so.6(clone+0x6d)[0x7f5f002027dd]
Sep 26 15:24:30 mysqld:
Sep 26 15:24:30 mysqld: Trying to get some variables.
Sep 26 15:24:30 mysqld: Some pointers may be invalid and cause the dump to abort.
Sep 26 15:24:30 mysqld: Query (7f5d980cdd90): is an invalid pointer
Sep 26 15:24:30 mysqld: Connection ID (thread ID): 1087
Sep 26 15:24:30 mysqld: Status: NOT_KILLED
操作系统:Debian GNU/Linux 6.0
Mysql:服务器版本5.5.38
我们没有安装任何新软件包。
问题时有发生。有时一天发生三次,然后大约五天都没有问题,依此类推。在错误日志中,我们可以看到有一行是我们的 mysql 插件的名称 - 但我不知道这是主要原因还是只是有关已加载模块的信息。
答案1
首先,值得指出的是日志中的输出实际上是什么,因为您显然对此感到困惑。
日志中的跟踪显示了崩溃发生时的调用堆栈,即导致崩溃的函数调用“路径”的列表。
虽然不是绝对的结论,但您的插件(我认为可以认为它更有可能出现问题,但这并不过于不公平)是导致崩溃的调用堆栈的一部分,这很可能不是巧合。
它似乎存在某种内存管理问题(基于 cfree 调用运行不正常)。
该插件的维护者应该看看这个。