Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Duplicate
-
3.0.3
-
None
-
None
-
CentOS 7
Description
I ve compiled mariadb-connector-c 3.0.3 from sources with MySQLcompat enabled
-DWITH_MYSQLCOMPAT=1
|
then upgraded the perl module DBD::mysql to version 4.046_01
While running a test that does
|
dbh->do("select 12");
|
dbh->disconnect;
|
# undef doh + reconnect
|
dbh->do("select 12");
|
I can notice a SEGV coming from libmariadb/mariadb_lib.c:1647 which looks like this for me
│1637 my_bool STDCALL mariadb_reconnect(MYSQL *mysql) │
|
│1638 { │
|
│1639 MYSQL tmp_mysql; │
|
│1640 struct my_hook_data hook_data; │
|
│1641 struct mysql_async_context *ctxt= NULL; │
|
│1642 LIST *li_stmt= mysql->stmts; │
|
│1643 │
|
│1644 /* check if connection handler is active */ │
|
│1645 if (IS_CONNHDLR_ACTIVE(mysql)) │
|
│1646 { │
|
>│1647 if (mysql->extension->conn_hdlr->plugin && mysql->extension->conn_hdlr->plugin->reconnect) │
|
│1648 return(mysql->extension->conn_hdlr->plugin->reconnect(mysql)); │
|
│1649 } │
|
│1650 │
|
│1651 if (!mysql->options.reconnect || │
|
│1652 (mysql->server_status & SERVER_STATUS_IN_TRANS) || !mysql->host_info) │
|
│1653 { │
|
│1654 /* Allow reconnect next time */ │
|
│1655 mysql->server_status&= ~SERVER_STATUS_IN_TRANS; │
|
│1656 my_set_error(mysql, CR_SERVER_GONE_ERROR, SQLSTATE_UNKNOWN, 0);
|
the gdb backtrace is
Program received signal SIGSEGV, Segmentation fault.
|
0x00007fffeed239e7 in mariadb_reconnect (mysql=0x130af10) at /root/rpmbuild/BUILD/mariadb-connector-c-3.0.3-src/libmariadb/mariadb_lib.c:1647
|
1647 if (mysql->extension->conn_hdlr->plugin && mysql->extension->conn_hdlr->plugin->reconnect)
|
(gdb) bt
|
#0 0x00007fffeed239e7 in mariadb_reconnect (mysql=0x130af10) at /root/rpmbuild/BUILD/mariadb-connector-c-3.0.3-src/libmariadb/mariadb_lib.c:1647
|
#1 0x00007fffeed23faa in mthd_my_send_cmd (mysql=0x130af10, command=COM_QUERY, arg=0x12faa40 "SELECT 12;", length=10, skipp_check=<optimized out>, opt_arg=0x0) at /root/rpmbuild/BUILD/mariadb-connector-c-3.0.3-src/libmariadb/mariadb_lib.c:376
|
#2 0x00007fffeed21ca1 in mysql_real_query (mysql=0x130af10, query=0x12faa40 "SELECT 12;", length=<optimized out>) at /root/rpmbuild/BUILD/mariadb-connector-c-3.0.3-src/libmariadb/mariadb_lib.c:2249
|
#3 0x00007fffeef73cee in mysql_st_internal_execute (h=h@entry=0x134eda0, statement=statement@entry=0x1640498, attribs=attribs@entry=0x0, num_params=num_params@entry=0, params=params@entry=0x0, result=result@entry=0x7fffffffdac8, svsock=0x130af10, use_mysql_use_result=use_mysql_use_result@entry=0) at dbdimp.c:3568
|
#4 0x00007fffeef7a49b in XS_DBD__mysql__db_do (cv=<optimized out>) at mysql.xs:450
|
#5 0x00007fffef194355 in XS_DBI_dispatch () from /usr/local/cpanel/3rdparty/perl/526/lib64/perl5/cpanel_lib/x86_64-linux-64int/auto/DBI/DBI.so
|
#6 0x00007ffff78ea39d in Perl_pp_entersub () from /usr/local/cpanel/3rdparty/perl/526/lib64/perl5/5.26.0/x86_64-linux-64int/CORE/libperl.so
|
#7 0x00007ffff78e34c6 in Perl_runops_standard () from /usr/local/cpanel/3rdparty/perl/526/lib64/perl5/5.26.0/x86_64-linux-64int/CORE/libperl.so
|
#8 0x00007ffff7887590 in perl_run () from /usr/local/cpanel/3rdparty/perl/526/lib64/perl5/5.26.0/x86_64-linux-64int/CORE/libperl.so
|
#9 0x0000000000400d73 in main ()
|
more debug informations from gdb
|
(gdb) p mysql->extension
|
$4 = (struct st_mariadb_extension *) 0x16546d0
|
(gdb) p *( mysql->extension )
|
$5 = {
|
conn_hdlr = 0x1660230,
|
session_state = {[0] = {
|
list = 0x0,
|
current = 0x0
|
},
|
[1] = {
|
list = 0x0,
|
current = 0x0
|
},
|
[2] = {
|
list = 0x0,
|
current = 0x0
|
},
|
[3] = {
|
list = 0x0,
|
current = 0x0
|
},
|
[4] = {
|
list = 0x0,
|
current = 0x0
|
},
|
[5] = {
|
list = 0xffffffff,
|
current = 0x0
|
}},
|
mariadb_client_flag = 10169976539133969351,
|
mariadb_server_capabilities = 0
|
}
|
(gdb) p mysql->extension->conn_hdlr
|
$6 = (MA_CONNECTION_HANDLER *) 0x1660230
|
(gdb) p * mysql->extension->conn_hdlr
|
$7 = {
|
plugin = 0x1200003732,
|
data = 0x81,
|
active = 16 '\020',
|
free_data = 88 'X'
|
}
|
(gdb) p mysql->extension->conn_hdlr->plugin
|
$8 = (struct st_ma_connection_plugin *) 0x1200003732
|
(gdb) p *( mysql->extension->conn_hdlr->plugin )
|
Cannot access memory at address 0x1200003732
|
As you can see the plugin address is incorrectly set or not initialized
Attachments
Issue Links
- links to