On various 32bit Windows systems, MariaDB 5.3.3 (not 5.2.10) crashes when a specific query within a trigger is executed. There is no entry in the Windows events log, just the following entry in MariaDB's error log. This log is from a dev PC running on Windows XP with MariaDB 5.3.3, serving as a slave. The replication master runs on 5.2.10. I will check if the same problems occur on Linux platform as well.
120112 9:48:04 [ERROR] mysqld got exception 0xc0000005 ;
This could be because you hit a bug. [...]
Server version: 5.3.3-MariaDB-log
key_buffer_size=0
read_buffer_size=4194304
max_used_connections=0
max_threads=62
threads_connected=0
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 762338 K ²)
bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
Thread pointer: 0x3a0b5730
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...
007D1464 mysqld.exe!my_wildcmp_unicode()
0057E062 mysqld.exe!?check_duplicate_names@@YA_NAAV?$List@VItem@@@@_N@Z()
0058ECC0 mysqld.exe!?mysql_derived_prepare@@YA_NPAVTHD@@PAUst_lex@@PAUTABLE_LIST@@@Z()
0058E4EA mysqld.exe!?mysql_handle_single_derived@@YA_NPAUst_lex@@PAUTABLE_LIST@@I@Z()
004F1B0F mysqld.exe!?handle_derived@TABLE_LIST@@QAE_NPAUst_lex@@I@Z()
004A2A98 mysqld.exe!?handle_derived@st_select_lex@@QAE_NPAUst_lex@@I@Z()
0050F1E2 mysqld.exe!?prepare@JOIN@@QAEHPAPAPAVItem@@PAUTABLE_LIST@@IPAV2@IPAUst_order@@323PAVst_select_lex@@PAVst_select_lex_unit@@@Z()
005442FD mysqld.exe!?prepare@st_select_lex_unit@@QAE_NPAVTHD@@PAVselect_result@@K@Z()
00544F61 mysqld.exe!?mysql_union@@YA_NPAVTHD@@PAUst_lex@@PAVselect_result@@PAVst_select_lex_unit@@K@Z()
00517308 mysqld.exe!?handle_select@@YA_NPAVTHD@@PAUst_lex@@PAVselect_result@@K@Z()
00456DEF mysqld.exe!?mysql_execute_command@@YAHPAVTHD@@@Z()
00567C1F mysqld.exe!?exec_core@sp_instr_stmt@@UAEHPAVTHD@@PAI@Z()
00569E09 mysqld.exe!?reset_lex_and_exec_core@sp_lex_keeper@@QAEHPAVTHD@@PAI_NPAVsp_instr@@@Z()
00569F8C mysqld.exe!?execute@sp_instr_stmt@@UAEHPAVTHD@@PAI@Z()
0056B2DE mysqld.exe!?execute@sp_head@@AAE_NPAVTHD@@@Z()
0056B779 mysqld.exe!?execute_trigger@sp_head@@QAE_NPAVTHD@@PBUst_mysql_lex_string@@1PAUst_grant_info@@@Z()
0057B5EF mysqld.exe!?process_triggers@Table_triggers_list@@QAE_NPAVTHD@@W4trg_event_type@@W4trg_action_time_type@@_N@Z()
00585466 mysqld.exe!?mysql_update@@YAHPAVTHD@@PAUTABLE_LIST@@AAV?$List@VItem@@@@2PAVItem@@IPAUst_order@@_KW4enum_duplicates@@_N@Z()
00456A6C mysqld.exe!?mysql_execute_command@@YAHPAVTHD@@@Z()
0045A175 mysqld.exe!?mysql_parse@@YAXPAVTHD@@PADIPAPBD@Z()
004ECBAD mysqld.exe!?do_apply_event@Query_log_event@@QAEHPBVRelay_log_info@@PBDI@Z()
004ED204 mysqld.exe!?do_apply_event@Query_log_event@@UAEHPBVRelay_log_info@@@Z()
0041BD77 mysqld.exe!?apply_event_and_update_pos@@YAHPAVLog_event@@PAVTHD@@PAVRelay_log_info@@@Z()
00420685 mysqld.exe!?show_master_info@@YA_NPAVTHD@@PAVMaster_info@@@Z()
00422629 mysqld.exe!handle_slave_sql()
007ADFCD mysqld.exe!pthread_start()
00781A99 mysqld.exe!evsignal_add()
00781B17 mysqld.exe!evsignal_add()
7C80B713 kernel32.dll!GetModuleFileNameA()
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (4149BBD0): =REPLACE INTO `dbwv`.`kd_statistik`
SELECT DISTINCT `b`.`vorgangsnummer` AS `vorgangsnummer`,
MAKE_SET(`dbwv`.`kd_profitcenter`.`debitornummer`, 'r','2.r','4.r') AS `debitor`,
`dbwv`.`kd_profitcenter`.`bezeichnung` AS `markt`,
`dbwv`.`kd_profitcenter`.`bkz` AS `bkz`,
`dbwv`.`kd_profitcenter`.`profitcenternummer` AS `profitcenter`,
`dbwv`.`kd_profitcenter`.`kostenstelle` AS `kostenstelle`,
CONCAT('#',`auftview`.`seriennummer`) AS `seriennummer`,
name_deutsch AS `gerätetyp`,
sonderbez_beleg AS `bemerkungen`,
REPLACE(`b`.`einzelbetrag`,'.',',') AS `nettobetrag`,
CONCAT('K',b.belegnummer) AS `kva-nummer`,
(SELECT DISTINCT DATE_FORMAT(`bb`.`datum`,'%d.%m.%Y') FROM `dbwv`.`v_belege` `bb` WHERE ((`bb`.`vorgangsnummer` = `b`.`vorgangsnummer`) AND (`bb`.`belegart` = 2))) AS `kva erstellt`,
(SELECT DISTINCT DATE_FORMAT(`bc`.`statusdatum`,'%d.%m.%Y') FROM `dbwv`.`v_belege` `bc` WHERE ((`bc`.`vorgangsnummer` = `b`.`vorgangsnummer`) AND (`bc`.`belegart` = 2))) AS `auftrag`,
(dbwv.p_workday_diff(
(SELECT `be`.`datum` FROM `dbwv`.`v_belege` `be` WHERE ((`be`.`vorgangsnummer` = `b`.`vorgangsnummer`) AND (`be`.`belegart` = 4))),
(SELECT `bc`.`statusdatum` FROM `dbwv`.`v_belege` `bc` WHERE ((`bc`.`vorgangsnummer` = `b`.`vorgangsnummer`) AND (`bc`.`belegart` = 2)))
)
) AS `dauer tage`,
CONCAT('L',(SELECT DISTINCT `bd`.`belegnummer` AS `belegnummer` FROM `dbwv`.`v_belege` `bd` WHERE ((`bd`.`vorgangsnummer` = `b`.`vorgangsnummer`) AND (`bd`.`belegart` = 4))),' vom ', (SELECT DATE_FORMAT(`be`.`datum`,'%d.%m.%Y') FROM `dbwv`.`v_belege` `be` WHERE ((`be`.`vorgangsnummer` = `b`.`vorgangsnummer`) AND (`be`.`belegart` = 4)))) AS `lieferschein vom`,
CONCAT('R',CONVERT((SELECT `be`.`belegnummer` AS `belegnummer` FROM `dbwv`.`v_belege` `be` WHERE ((`be`.`vorgangsnummer` = `b`.`vorgangsnummer`) AND (`be`.`belegart` = 5))) using utf8), ' vom ',(SELECT date_format(`bf`.`datum`, '%d.%m.%Y') FROM `dbwv`.`v_belege` `bf` WHERE ((`bf`.`vorgangsnummer` = `b`.`vorgangsnummer`) AND (`bf`.`belegart` = 5)))) AS `rechunng vom`,
`dbwv`.`kd_profitcenter`.`firma` AS `cust`
FROM ((`dbwv`.`v_belege` `b`
LEFT JOIN `dbw2`.`auftview` on((`b`.`vorgangsnummer` = `auftview`.`vorgangsnr`)))
LEFT JOIN `dbwv`.`kd_profitcenter` on((`auftview`.`kundenid` = `dbwv`.`kd_profitcenter`.`kundennummer`)))
WHERE ((`b`.`belegart` = 2) AND (NEW.vorgangsnr = `auftview`.`vorgangsnr`) AND (uid IN (63282,63211,63212,63213)))
UNION
SELECT DISTINCT `b`.`vorgangsnummer` AS `vorgangsnummer`,
MAKE_SET(`dbwv`.`kd_profitcenter`.`debitornummer`, 'r','2.r','4.r') AS `debitor`,
`dbwv`.`kd_profitcenter`.`Bezeichnung` AS `markt`,
`dbwv`.`kd_profitcenter`.`bkz` AS `bkz`,
`dbwv`.`kd_profitcenter`.`profitcenternummer` AS `profitcenter`,
`dbwv`.`kd_profitcenter`.`kostenstelle` AS `kostenstelle`,
CONCAT('#',`auftview`.`seriennummer`) AS `seriennummer`,
`auftview`.`name_deutsch` AS `gerätetyp`,
sonderbez AS `bemerkungen`,
NULL AS `nettobetrag`,
NULL AS `kva-nummer`,
NULL AS `kva erstellt`,
NULL AS `auftrag`,
NULL AS `dauer tage`,
CONCAT('L',`belegnummer`,' vom ', DATE_FORMAT(`datum`,'%d.%m.%Y')) AS `lieferschein vom`,
NULL AS `rechnung vom`,
`dbwv`.`kd_profitcenter`.`Firma` AS `cust`
FROM ((`dbw2`.`auftview`
LEFT JOIN `dbwv`.`v_belege` `b` on((`b`.`vorgangsnummer` = `auftview`.`vorgangsnr`)))
LEFT JOIN `dbwv`.`kd_profitcenter` on((`auftview`.`kundenid` = `dbwv`.`kd_profitcenter`.`kundennummer`)))
WHERE ((`b`.`belegart` = 4) AND (NEW.vorgangsnr = `auftview`.`vorgangsnr`) AND (uid IN (63282,63211,63212,63213)) AND ((SELECT DISTINCT belegliste.techniknummer FROM dbwv.belegliste WHERE belegart=5 AND belegliste.techniknummer=auftview.techniknr) IS NULL))
Connection ID (thread ID): 2
Status: NOT_KILLED
Optimizer switch: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on
²) the same also occurs when the slave is set to use much less memory (eg 128000K).
MariaDB 5.3.3 crashes rather randomly on Debian 6.0 (Squeeze):
120112 11:51:35 [ERROR] mysqld got signal 6 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help diagnose
the problem, but since we have already crashed, something is definitely wrong
and this may fail.
Server version: 5.3.3-MariaDB- rc-debug size=262144 connections= 1 size)*max_ threads = 118730 K
key_buffer_size=0
read_buffer_
max_used_
max_threads=153
threads_connected=1
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_
bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
Thread pointer: 0x92df3f8 libexec/ mysqld( my_print_ stacktrace+ 0x22) [0x85c5da2] libexec/ mysqld( handle_ segfault+ 0x343) [0x8262b66] cmov/libc. so.6(abort+ 0x182) [0xb74a0b82] cmov/libc. so.6(__ assert_ fail+0xf8) [0xb74968b8] libexec/ mysqld( Item_subselect: :fix_fields( THD*, Item**)+0x7c) [0x82066de] libexec/ mysqld( sp_prepare_ func_item( THD*, Item**)+0x92) [0x8457940] libexec/ mysqld( sp_instr_ jump_if_ not::exec_ core(THD* , unsigned int*)+0x1b) [0x845e681] libexec/ mysqld( sp_lex_ keeper: :reset_ lex_and_ exec_core( THD*, unsigned int*, bool, sp_instr*)+0x1cc) [0x845d864] libexec/ mysqld( sp_instr_ jump_if_ not::execute( THD*, unsigned int*)+0xa8) [0x845e650] libexec/ mysqld( sp_head: :execute( THD*)+0x4c6) [0x845a290] libexec/ mysqld( sp_head: :execute_ trigger( THD*, st_mysql_lex_string const*, st_mysql_lex_string const*, st_grant_ info*)+ 0x2ef) [0x845ac17] libexec/ mysqld( Table_triggers_ list::process_ triggers( THD*, trg_event_type, trg_action_ time_type, bool)+0x196) [0x846e640] libexec/ mysqld( mysql_update( THD*, TABLE_LIST*, List<Item>&, List<Item>&, Item*, unsigned int, st_order*, unsigned long long, enum_duplicates, bool)+0x1817) [0x834005f] libexec/ mysqld( mysql_execute_ command( THD*)+0x2d2d) [0x827677d] libexec/ mysqld( mysql_parse( THD*, char*, unsigned int, char const**)+0x271) [0x827f9b2] libexec/ mysqld( Query_log_ event:: do_apply_ event(Relay_ log_info const*, char const*, unsigned int)+0x7a7) [0x837ec3f] libexec/ mysqld( Query_log_ event:: do_apply_ event(Relay_ log_info const*)+0x2c) [0x837e496] libexec/ mysqld( Log_event: :apply_ event(Relay_ log_info const*)+0x1f) [0x84302c3] libexec/ mysqld( apply_event_ and_update_ pos(Log_ event*, THD*, Relay_log_ info*)+ 0x250) [0x8429d39] libexec/ mysqld( ) [0x842a1df] libexec/ mysqld( handle_ slave_sql+ 0x9e3) [0x842c444] cmov/libpthread .so.0(+ 0x5955) [0xb7701955] cmov/libc. so.6(clone+ 0x5e) [0xb753ee7e]
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 = 0xad94433c thread_stack 0x48000
/opt/mariadb/
/opt/mariadb/
[0xb778e400]
/lib/i686/
/lib/i686/
/opt/mariadb/
/opt/mariadb/
/opt/mariadb/
/opt/mariadb/
/opt/mariadb/
/opt/mariadb/
/opt/mariadb/
/opt/mariadb/
/opt/mariadb/
/opt/mariadb/
/opt/mariadb/
/opt/mariadb/
/opt/mariadb/
/opt/mariadb/
/opt/mariadb/
/opt/mariadb/
/opt/mariadb/
/lib/i686/
/lib/i686/
Trying to get some v...