Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-3518

LP:915222 - Query in trigger causes MariaDB 5.3 to crash or throw Valgrind errors in my_strcasecmp_utf8

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Fixed
    • None
    • None
    • None

    Description

      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).

      Attachments

        Activity

          People

            igor Igor Babaev (Inactive)
            launchpadneb Launchpad Neb (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.