Mysql 崩溃-插件库

Mysql 崩溃-插件库

我想问一下,从下面的日志中我们是否可以说 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 调用运行不正常)。

该插件的维护者应该看看这个。

相关内容