maria-discuss team mailing list archive
-
maria-discuss team
-
Mailing list archive
-
Message #03614
New Question: Consistently able to crash MariaDB 10.0.25 and 10.1.4 - Signal 11
Hello,
A new question has been asked in "MariaDB Community" by gaurav_sharma_g1. Please answer it at http://mariadb.com/kb/en/consistently-able-to-crash-mariadb-10025-and-1014-signal-11/ as the person asking the question may not be subscribed to the mailing list.
--------------------------------
We are able to consistently reproduce the crash of MariaDB with the following query:
{{{
drop procedure if exists sp_getServerAndAgentHeartbeats;
DELIMITER $$
CREATE PROCEDURE sp_getServerAndAgentHeartbeats()
begin
select allof.*
from (select bothof.Name fullname, bothof.instanceid name, bothof.DMSUrl id, bothof.ts heartbeat, bothof.tz, bothof.local_time, bothof.pdfagentsetup, bothof.origin, bothof.dmsid, bothof.DealerID dealerid, bothof.server_group, bothof.hasNotes
from
(
select d.Name, dlrurl.DealerID, DMSUrl, DMSSuff, psh.*
, (select OptionValue from DealerSetupOption where DealerID = d.ID and OptionKey = 'Dealer.timezone.id') tz
, (select timestampadd(minute, (480 + OptionValue), current_timestamp()) from DealerSetupOption where DealerID = d.ID and OptionKey = 'Dealer.timezone' ) local_time
, (select OptionValue from DealerSetupOption where DealerID = d.ID and OptionKey = 'pdfserver.settings') pdfagentsetup
, "server" origin
, (select DMSID from DealerDMS where DealerID = d.ID) dmsid
, (select guid from dms_staging_db.server_groups sg where sg.ip = DMSUrl and find_in_set(DMSSuff, sg.suffix) > 0 limit 1) server_group
, IF((select count(*) from dms_staging_db.server_notes sn where sn.uuid = server_group) >= 1,'true','false') hasNotes
from (select DealerID, OptionValue as DMSUrl
from DealerSetupOption dso1
where OptionKey = 'Dealer.Pdf.Source.Url') dlrurl
inner join (select DealerID, OptionValue as DMSSuff
from DealerSetupOption dso1
where OptionKey = 'ADP.SessionSuffix') dlrsuff
on dlrsuff.DealerID = dlrurl.DealerID
inner join Dealer d on dlrurl.DealerID = d.ID
inner join PdfServerHeartbeat psh on psh.dealerurl = DMSUrl and psh.instanceid = concat_ws('', '_', DMSSuff)
where coalesce(DMSUrl, '') !='' and coalesce(DMSSuff, '') !=''
) bothof
union
(
select d.Name fullname
, aih.DealerIdentifier name
, aih.DealerMarker id
, aih.lastgotdata heartbeat
, (select OptionValue from DealerSetupOption where DealerID = d.ID and OptionKey = 'Dealer.timezone.id') tz
, (select timestampadd(minute, (480 + OptionValue), current_timestamp()) from DealerSetupOption where DealerID = d.ID and OptionKey = 'Dealer.timezone' ) local_time
, (select OptionValue from DealerSetupOption where DealerID = d.ID and OptionKey = 'pdfserver.settings') pdfagentsetup
, "agent" origin
, (select DMSID from DealerDMS where DealerID = d.ID) dmsid
, d.ID DealerID
, (select guid from dms_staging_db.server_groups sg where sg.ip = aih.DealerMarker and find_in_set(aih.DealerIdentifier, sg.suffix) > 0 limit 1) server_group
, IF((select count(*) from dms_staging_db.server_notes sn where sn.uuid = server_group) >= 1,'true','false') hasNotes
from (select DealerMarker, DealerIdentifier, count(1) pcount, max(ts) lastgotdata
from AgentInstanceHeartbeat
where Instance != 'pdf_server'
group by DealerMarker, DealerIdentifier
) aih
inner join (
select dlrurl.DealerID, DMSUrl, DMSSuff
from (select DealerID, OptionValue as DMSUrl
from DealerSetupOption dso1
where OptionKey = 'Dealer.Pdf.Source.Url') dlrurl
inner join (select DealerID, OptionValue as DMSSuff
from DealerSetupOption dso1
where OptionKey = 'ADP.SessionSuffix') dlrsuff
on dlrsuff.DealerID = dlrurl.DealerID
where coalesce(DMSUrl, '') !='' and coalesce(DMSSuff, '') !=''
) dsodata on (aih.DealerMarker = dsodata.DMSUrl and aih.DealerIdentifier = dsodata.DMSSuff)
inner join Dealer d on (dsodata.DealerID = d.ID)
where d.isValid = 1
)
order by 1 asc) allof;
end$$
}}}
**Our developer wrote this query as a modification to an existing query and upon executing the above SP, we consistently see the following stack trace in the MariaDB logs:**
{{{
Thread pointer: 0x0x7f301afa0008
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 0x7f2fdce88140 thread_stack 0x48400
/usr/sbin/mysqld(my_print_stacktrace+0x2b)[0x7f48c34c197b]
/usr/sbin/mysqld(handle_fatal_signal+0x475)[0x7f48c3020825]
/lib64/libpthread.so.0(+0xf7e0)[0x7f48c26267e0]
/usr/sbin/mysqld(_ZN17Dependency_marker11visit_fieldEP10Item_field+0x4b)[0x7f48c304765b]
/usr/sbin/mysqld(_ZN10Item_field30enumerate_field_refs_processorEPh+0x12)[0x7f48c302d612]
mysys/stacktrace.c:247(my_print_stacktrace)[0x7f48c3043c43]
sql/signal_handler.cc:160(handle_fatal_signal)[0x7f48c30a2690]
sql/item.cc:6707(Dependency_marker::visit_field(Item_field*))[0x7f48c303ddc4]
sql/item_subselect.cc:329(Item_subselect::enumerate_field_refs_processor(unsigned char*))[0x7f48c303ef5e]
sql/item.cc:5054(Item_field::fix_fields(THD*, Item**))[0x7f48c3040098]
/usr/sbin/mysqld(_ZN9Item_func10fix_fieldsEP3THDPP4Item+0x1a7)[0x7f48c30732a7]
sql/item_func.cc:208(Item_func::fix_fields(THD*, Item**))[0x7f48c2e713cb]
sql/sql_base.cc:8629(setup_conds(THD*, TABLE_LIST*, List<TABLE_LIST>&, Item**))[0x7f48c2ef5160]
sql/sql_select.cc:646(setup_without_group)[0x7f48c30a5b44]
sql/item_subselect.cc:259(Item_subselect::fix_fields(THD*, Item**))[0x7f48c30a9a0d]
sql/item_func.cc:208(Item_func::fix_fields(THD*, Item**))[0x7f48c30732a7]
sql/item_func.cc:208(Item_func::fix_fields(THD*, Item**))[0x7f48c30732a7]
sql/sql_base.cc:7901(setup_fields(THD*, Item**, List<Item>&, enum_mark_columns, List<Item>*, bool))[0x7f48c2e70c13]
sql/sql_select.cc:791(JOIN::prepare(Item***, TABLE_LIST*, unsigned int, Item*, unsigned int, st_order*, bool, st_order*, Item*, st_order*, st_select_lex*, st_select_lex_unit*))[0x7f48c2ef50a2]
sql/sql_union.cc:454(st_select_lex_unit::prepare(THD*, select_result*, unsigned long))[0x7f48c2f400ec]
sql/sql_derived.cc:671(mysql_derived_prepare(THD*, LEX*, TABLE_LIST*))[0x7f48c2e8e570]
sql/sql_derived.cc:195(mysql_handle_single_derived(LEX*, TABLE_LIST*, unsigned int))[0x7f48c2e8f327]
sql/sql_lex.cc:3820(st_select_lex::handle_derived(LEX*, unsigned int))[0x7f48c2ea46b7]
sql/table.cc:7126(TABLE_LIST::handle_derived(LEX*, unsigned int))[0x7f48c2f55767]
sql/sql_lex.cc:3820(st_select_lex::handle_derived(LEX*, unsigned int))[0x7f48c2ea46b7]
sql/sql_select.cc:711(JOIN::prepare(Item***, TABLE_LIST*, unsigned int, Item*, unsigned int, st_order*, bool, st_order*, Item*, st_order*, st_select_lex*, st_select_lex_unit*))[0x7f48c2ef4e31]
sql/sql_select.cc:3429(mysql_select(THD*, Item***, TABLE_LIST*, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*))[0x7f48c2f01aed]
sql/sql_select.cc:384(handle_select(THD*, LEX*, select_result*, unsigned long))[0x7f48c2f04bfd]
/usr/sbin/mysqld(+0x451102)[0x7f48c2ea7102]
sql/sql_parse.cc:5895(execute_sqlcom_select)[0x7f48c2eb33bf]
sql/sp_head.cc:3215(sp_instr_stmt::exec_core(THD*, unsigned int*))[0x7f48c311c9be]
sql/sp_head.cc:2979(sp_lex_keeper::reset_lex_and_exec_core(THD*, unsigned int*, bool, sp_instr*))[0x7f48c312243e]
sql/sp_head.cc:3129(sp_instr_stmt::execute(THD*, unsigned int*))[0x7f48c312293d]
sql/sp_head.cc:1319(sp_head::execute(THD*, bool))[0x7f48c311f91c]
sql/sp_head.cc:2104(sp_head::execute_procedure(THD*, List<Item>*))[0x7f48c3120cc6]
sql/sql_parse.cc:2405(do_execute_sp)[0x7f48c2eb3b30]
sql/sp_head.cc:3215(sp_instr_stmt::exec_core(THD*, unsigned int*))[0x7f48c311c9be]
sql/sp_head.cc:2979(sp_lex_keeper::reset_lex_and_exec_core(THD*, unsigned int*, bool, sp_instr*))[0x7f48c312243e]
sql/sp_head.cc:3129(sp_instr_stmt::execute(THD*, unsigned int*))[0x7f48c312293d]
sql/sp_head.cc:1319(sp_head::execute(THD*, bool))[0x7f48c311f91c]
sql/sp_head.cc:2104(sp_head::execute_procedure(THD*, List<Item>*))[0x7f48c3120cc6]
sql/sql_parse.cc:2405(do_execute_sp)[0x7f48c2eb3b30]
sql/sql_parse.cc:7314(mysql_parse(THD*, char*, unsigned int, Parser_state*))[0x7f48c2eb68fd]
sql/sql_parse.cc:1486(dispatch_command(enum_server_command, THD*, char*, unsigned int))[0x7f48c2eb955b]
sql/sql_parse.cc:1109(do_command(THD*))[0x7f48c2eb9b0b]
sql/sql_connect.cc:1350(do_handle_one_connection(THD*))[0x7f48c2f7569f]
sql/sql_connect.cc:1264(handle_one_connection)[0x7f48c2f757f7]
/lib64/libpthread.so.0(+0x7aa1)[0x7f48c261eaa1]
/lib64/libc.so.6(clone+0x6d)[0x7f48c0b03aad]
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (0x7f302e2a8020): is an invalid pointer
Connection ID (thread ID): 264
Status: NOT_KILLED
}}}
After this MariaDB crashes and restarts.
**For now we have reverted the changes back to the old code which is shown below:**
{{{
drop procedure if exists sp_getServerAndAgentHeartbeats;
DELIMITER $$
CREATE PROCEDURE sp_getServerAndAgentHeartbeats()
begin
select allof.*, IF((select count(*) from dms_staging_db.server_notes sn where sn.uuid = concat(allof.dealerid,'-notes')) >= 1,'true','false') hasNotes from (select bothof.Name fullname, bothof.instanceid name, bothof.DMSUrl id, bothof.ts heartbeat, bothof.tz, bothof.local_time, bothof.pdfagentsetup, bothof.origin, bothof.dmsid, bothof.DealerID dealerid
from
(
(
select d.Name, dlrurl.DealerID, DMSUrl, DMSSuff, psh.*
, (select OptionValue from DealerSetupOption where DealerID = d.ID and OptionKey = 'Dealer.timezone.id') tz
, (select timestampadd(minute, (480 + OptionValue), current_timestamp()) from DealerSetupOption where DealerID = d.ID and OptionKey = 'Dealer.timezone' ) local_time
, (select OptionValue from DealerSetupOption where DealerID = d.ID and OptionKey = 'pdfserver.settings') pdfagentsetup
, "server" origin
, (select DMSID from DealerDMS where DealerID = d.ID) dmsid
from (select DealerID, OptionValue as DMSUrl
from DealerSetupOption dso1
where OptionKey = 'Dealer.Pdf.Source.Url') dlrurl
inner join (select DealerID, OptionValue as DMSSuff
from DealerSetupOption dso1
where OptionKey = 'ADP.SessionSuffix') dlrsuff
on dlrsuff.DealerID = dlrurl.DealerID
inner join Dealer d on dlrurl.DealerID = d.ID
inner join PdfServerHeartbeat psh on psh.dealerurl = DMSUrl and psh.instanceid = concat_ws('', '_', DMSSuff)
where coalesce(DMSUrl, '') !='' and coalesce(DMSSuff, '') !=''
)
union
(
select d.Name, data.*
, (select OptionValue from DealerSetupOption where DealerID = d.ID and OptionKey = 'Dealer.timezone.id') tz
, (select timestampadd(minute, (480 + OptionValue), current_timestamp()) from DealerSetupOption where DealerID = d.ID and OptionKey = 'Dealer.timezone' ) local_time
, (select OptionValue from DealerSetupOption where DealerID = d.ID and OptionKey = 'pdfserver.settings') pdfagentsetup
, "server" origin
, (select DMSID from DealerDMS where DealerID = d.ID) dmsid
from (
select replace(dealerurl, 'dealer-', '') DealerID, dealerurl DMSUrl, null DMSSuff, psh1.*
from PdfServerHeartbeat psh1
where dealerurl like 'dealer-%'
) data
inner join Dealer d on data.DealerID = d.ID
)
) bothof
union
(
select d.Name fullname
, aih.DealerIdentifier name
, aih.DealerMarker id
, aih.lastgotdata heartbeat
, (select OptionValue from DealerSetupOption where DealerID = d.ID and OptionKey = 'Dealer.timezone.id') tz
, (select timestampadd(minute, (480 + OptionValue), current_timestamp()) from DealerSetupOption where DealerID = d.ID and OptionKey = 'Dealer.timezone' ) local_time
, (select OptionValue from DealerSetupOption where DealerID = d.ID and OptionKey = 'pdfserver.settings') pdfagentsetup
, "agent" origin
, (select DMSID from DealerDMS where DealerID = d.ID) dmsid
, d.ID DealerID
from (select DealerMarker, DealerIdentifier, count(1) pcount, max(ts) lastgotdata
from AgentInstanceHeartbeat
where Instance != 'pdf_server'
group by DealerMarker, DealerIdentifier
) aih
inner join (
select dlrurl.DealerID, DMSUrl, DMSSuff
from (select DealerID, OptionValue as DMSUrl
from DealerSetupOption dso1
where OptionKey = 'Dealer.Pdf.Source.Url') dlrurl
inner join (select DealerID, OptionValue as DMSSuff
from DealerSetupOption dso1
where OptionKey = 'ADP.SessionSuffix') dlrsuff
on dlrsuff.DealerID = dlrurl.DealerID
where coalesce(DMSUrl, '') !='' and coalesce(DMSSuff, '') !=''
) dsodata on (aih.DealerMarker = dsodata.DMSUrl and aih.DealerIdentifier = dsodata.DMSSuff)
inner join Dealer d on (dsodata.DealerID = d.ID)
where d.isValid = 1
)
order by 1 asc) allof;
end$$
}}}
--------------------------------
To view or answer this question please visit: http://mariadb.com/kb/en/consistently-able-to-crash-mariadb-10025-and-1014-signal-11/