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

TO_DATE: MSAN/Valgrind/UBSAN errors in extract_oracle_date_time

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Critical
    • Resolution: Fixed
    • N/A
    • 12.3.1
    • Server
    • None
    • Not for Release Notes
    • Fix pushed
    • Q1/2026 Server Development

    Description

      SELECT TO_DATE('2026-01' DEFAULT '10(12)AM' ON CONVERSION ERROR, 'MI(HH12)AM');
      

      bb-12.3-MDEV-19683-to_date 53853322009d1458b24f6825127c6cfe2043a2d7 Valgriind

      ==1211179== Conditional jump or move depends on uninitialised value(s)
      ==1211179==    at 0x1D3D7BE: my_strcoll_ascii_4bytes_found (ctype-ascii.h:111)
      ==1211179==    by 0x1D4338D: my_strnncoll_utf8mb4_general_ci (strcoll.inl:241)
      ==1211179==    by 0xC2BABC: charset_info_st::strnncoll(char const*, unsigned long, char const*, unsigned long, char*) const (m_ctype.h:1112)
      ==1211179==    by 0x13C20D2: extract_oracle_date_time(THD*, unsigned short*, char const*, unsigned int, charset_info_st const*, charset_info_st const*, st_mysql_time*, MY_LOCALE const*, char const*, date_conv_mode_t, bool) (item_timefunc.cc:925)
      ==1211179==    by 0x13D0ACC: Item_func_to_date::get_date_common(THD*, st_mysql_time*, date_mode_t, enum_mysql_timestamp_type) (item_timefunc.cc:5049)
      ==1211179==    by 0x13D879A: Func_handler_str_to_date_datetime_sec::get_date(THD*, Item_handled_func*, st_mysql_time*, date_mode_t) const (item_timefunc.h:2165)
      ==1211179==    by 0x112873A: Item_handled_func::get_date(THD*, st_mysql_time*, date_mode_t) (item_func.h:917)
      ==1211179==    by 0x1117BA6: Type_handler::Item_send_datetime(Item*, Protocol*, st_value*) const (sql_type.cc:7657)
      ==1211179==    by 0xFD7D85: Type_handler_datetime_common::Item_send(Item*, Protocol*, st_value*) const (sql_type.h:6711)
      ==1211179==    by 0xC2EA83: Item::send(Protocol*, st_value*) (item.h:1231)
      ==1211179==    by 0xC87DEE: Protocol::send_result_set_row(List<Item>*) (protocol.cc:1359)
      ==1211179==    by 0xD4F5B6: select_send::send_data(List<Item>&) (sql_class.cc:3348)
      ==1211179==    by 0xD4F24B: select_result_sink::send_data_with_check(List<Item>&, st_select_lex_unit*, unsigned long long) (sql_class.cc:3246)
      ==1211179==    by 0xE63F05: JOIN::exec_inner() (sql_select.cc:5005)
      ==1211179==    by 0xE637D5: JOIN::exec() (sql_select.cc:4922)
      ==1211179==    by 0xE65194: mysql_select(THD*, TABLE_LIST*, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) (sql_select.cc:5450)
      ==1211179== Conditional jump or move depends on uninitialised value(s)
      ==1211179==    at 0x1D3D8AF: my_strcoll_ascii_toupper_4bytes (ctype-ascii.h:135)
      ==1211179==    by 0x1D43405: my_strnncoll_utf8mb4_general_ci (strcoll.inl:254)
      ==1211179==    by 0xC2BABC: charset_info_st::strnncoll(char const*, unsigned long, char const*, unsigned long, char*) const (m_ctype.h:1112)
      ==1211179==    by 0x13C20D2: extract_oracle_date_time(THD*, unsigned short*, char const*, unsigned int, charset_info_st const*, charset_info_st const*, st_mysql_time*, MY_LOCALE const*, char const*, date_conv_mode_t, bool) (item_timefunc.cc:925)
      ==1211179==    by 0x13D0ACC: Item_func_to_date::get_date_common(THD*, st_mysql_time*, date_mode_t, enum_mysql_timestamp_type) (item_timefunc.cc:5049)
      ==1211179==    by 0x13D879A: Func_handler_str_to_date_datetime_sec::get_date(THD*, Item_handled_func*, st_mysql_time*, date_mode_t) const (item_timefunc.h:2165)
      ==1211179==    by 0x112873A: Item_handled_func::get_date(THD*, st_mysql_time*, date_mode_t) (item_func.h:917)
      ==1211179==    by 0x1117BA6: Type_handler::Item_send_datetime(Item*, Protocol*, st_value*) const (sql_type.cc:7657)
      ==1211179==    by 0xFD7D85: Type_handler_datetime_common::Item_send(Item*, Protocol*, st_value*) const (sql_type.h:6711)
      ==1211179==    by 0xC2EA83: Item::send(Protocol*, st_value*) (item.h:1231)
      ==1211179==    by 0xC87DEE: Protocol::send_result_set_row(List<Item>*) (protocol.cc:1359)
      ==1211179==    by 0xD4F5B6: select_send::send_data(List<Item>&) (sql_class.cc:3348)
      ==1211179==    by 0xD4F24B: select_result_sink::send_data_with_check(List<Item>&, st_select_lex_unit*, unsigned long long) (sql_class.cc:3246)
      ==1211179==    by 0xE63F05: JOIN::exec_inner() (sql_select.cc:5005)
      ==1211179==    by 0xE637D5: JOIN::exec() (sql_select.cc:4922)
      ==1211179==    by 0xE65194: mysql_select(THD*, TABLE_LIST*, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) (sql_select.cc:5450)
      ==1211179== Conditional jump or move depends on uninitialised value(s)
      ==1211179==    at 0x1D3D7BE: my_strcoll_ascii_4bytes_found (ctype-ascii.h:111)
      ==1211179==    by 0x1D4338D: my_strnncoll_utf8mb4_general_ci (strcoll.inl:241)
      ==1211179==    by 0xC2BABC: charset_info_st::strnncoll(char const*, unsigned long, char const*, unsigned long, char*) const (m_ctype.h:1112)
      ==1211179==    by 0x13C212D: extract_oracle_date_time(THD*, unsigned short*, char const*, unsigned int, charset_info_st const*, charset_info_st const*, st_mysql_time*, MY_LOCALE const*, char const*, date_conv_mode_t, bool) (item_timefunc.cc:930)
      ==1211179==    by 0x13D0ACC: Item_func_to_date::get_date_common(THD*, st_mysql_time*, date_mode_t, enum_mysql_timestamp_type) (item_timefunc.cc:5049)
      ==1211179==    by 0x13D879A: Func_handler_str_to_date_datetime_sec::get_date(THD*, Item_handled_func*, st_mysql_time*, date_mode_t) const (item_timefunc.h:2165)
      ==1211179==    by 0x112873A: Item_handled_func::get_date(THD*, st_mysql_time*, date_mode_t) (item_func.h:917)
      ==1211179==    by 0x1117BA6: Type_handler::Item_send_datetime(Item*, Protocol*, st_value*) const (sql_type.cc:7657)
      ==1211179==    by 0xFD7D85: Type_handler_datetime_common::Item_send(Item*, Protocol*, st_value*) const (sql_type.h:6711)
      ==1211179==    by 0xC2EA83: Item::send(Protocol*, st_value*) (item.h:1231)
      ==1211179==    by 0xC87DEE: Protocol::send_result_set_row(List<Item>*) (protocol.cc:1359)
      ==1211179==    by 0xD4F5B6: select_send::send_data(List<Item>&) (sql_class.cc:3348)
      ==1211179==    by 0xD4F24B: select_result_sink::send_data_with_check(List<Item>&, st_select_lex_unit*, unsigned long long) (sql_class.cc:3246)
      ==1211179==    by 0xE63F05: JOIN::exec_inner() (sql_select.cc:5005)
      ==1211179==    by 0xE637D5: JOIN::exec() (sql_select.cc:4922)
      ==1211179==    by 0xE65194: mysql_select(THD*, TABLE_LIST*, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) (sql_select.cc:5450)
      ==1211179== Conditional jump or move depends on uninitialised value(s)
      ==1211179==    at 0x1D3D8AF: my_strcoll_ascii_toupper_4bytes (ctype-ascii.h:135)
      ==1211179==    by 0x1D43405: my_strnncoll_utf8mb4_general_ci (strcoll.inl:254)
      ==1211179==    by 0xC2BABC: charset_info_st::strnncoll(char const*, unsigned long, char const*, unsigned long, char*) const (m_ctype.h:1112)
      ==1211179==    by 0x13C212D: extract_oracle_date_time(THD*, unsigned short*, char const*, unsigned int, charset_info_st const*, charset_info_st const*, st_mysql_time*, MY_LOCALE const*, char const*, date_conv_mode_t, bool) (item_timefunc.cc:930)
      ==1211179==    by 0x13D0ACC: Item_func_to_date::get_date_common(THD*, st_mysql_time*, date_mode_t, enum_mysql_timestamp_type) (item_timefunc.cc:5049)
      ==1211179==    by 0x13D879A: Func_handler_str_to_date_datetime_sec::get_date(THD*, Item_handled_func*, st_mysql_time*, date_mode_t) const (item_timefunc.h:2165)
      ==1211179==    by 0x112873A: Item_handled_func::get_date(THD*, st_mysql_time*, date_mode_t) (item_func.h:917)
      ==1211179==    by 0x1117BA6: Type_handler::Item_send_datetime(Item*, Protocol*, st_value*) const (sql_type.cc:7657)
      ==1211179==    by 0xFD7D85: Type_handler_datetime_common::Item_send(Item*, Protocol*, st_value*) const (sql_type.h:6711)
      ==1211179==    by 0xC2EA83: Item::send(Protocol*, st_value*) (item.h:1231)
      ==1211179==    by 0xC87DEE: Protocol::send_result_set_row(List<Item>*) (protocol.cc:1359)
      ==1211179==    by 0xD4F5B6: select_send::send_data(List<Item>&) (sql_class.cc:3348)
      ==1211179==    by 0xD4F24B: select_result_sink::send_data_with_check(List<Item>&, st_select_lex_unit*, unsigned long long) (sql_class.cc:3246)
      ==1211179==    by 0xE63F05: JOIN::exec_inner() (sql_select.cc:5005)
      ==1211179==    by 0xE637D5: JOIN::exec() (sql_select.cc:4922)
      ==1211179==    by 0xE65194: mysql_select(THD*, TABLE_LIST*, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) (sql_select.cc:5450)
      

      UBSAN

      /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-ubsan/sql/item_timefunc.cc:2636:20: runtime error: shift exponent 57246 is too large for 64-bit type 'long long unsigned int'
      

      MSAN

      ==1211658==WARNING: MemorySanitizer: use-of-uninitialized-value
          #0 0x562ffd55f8da in my_strnncoll_utf8mb4_general_ci /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/strings/strcoll.inl:241:9
          #1 0x562ffc29e98a in charset_info_st::strnncoll(char const*, unsigned long, char const*, unsigned long, char*) const /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/include/m_ctype.h:1112:12
          #2 0x562ffc29e98a in extract_oracle_date_time(THD*, unsigned short*, char const*, unsigned int, charset_info_st const*, charset_info_st const*, st_mysql_time*, MY_LOCALE const*, char const*, date_conv_mode_t, bool) /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/sql/item_timefunc.cc:925:25
          #3 0x562ffc29d6ff in Item_func_to_date::get_date_common(THD*, st_mysql_time*, date_mode_t, enum_mysql_timestamp_type) /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/sql/item_timefunc.cc:5049:8
          #4 0x562ffbc0ff4c in Type_handler::Item_send_datetime(Item*, Protocol*, st_value*) const /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/sql/sql_type.cc:7657:9
          #5 0x562ffb24c52a in Protocol::send_result_set_row(List<Item>*) /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/sql/protocol.cc:1359:15
          #6 0x562ffb3e7c2f in select_send::send_data(List<Item>&) /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/sql/sql_class.cc:3348:17
          #7 0x562ffb3e7498 in select_result_sink::send_data_with_check(List<Item>&, st_select_lex_unit*, unsigned long long) /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/sql/sql_class.cc:3246:11
          #8 0x562ffb69264a in JOIN::exec_inner() /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/sql/sql_select.cc:5005:22
          #9 0x562ffb6902b1 in JOIN::exec() /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/sql/sql_select.cc:4922:8
          #10 0x562ffb61d7e8 in mysql_select(THD*, TABLE_LIST*, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/sql/sql_select.cc:5450:21
          #11 0x562ffb61cac5 in handle_select(THD*, LEX*, select_result*, unsigned long long) /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/sql/sql_select.cc:636:10
          #12 0x562ffb55d948 in execute_sqlcom_select(THD*, TABLE_LIST*) /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/sql/sql_parse.cc:6172:12
          #13 0x562ffb54b590 in mysql_execute_command(THD*, bool) /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/sql/sql_parse.cc:3951:12
          #14 0x562ffb539319 in mysql_parse(THD*, char*, unsigned int, Parser_state*) /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/sql/sql_parse.cc:7895:18
          #15 0x562ffb5325f4 in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/sql/sql_parse.cc:1878:7
          #16 0x562ffb53a3d1 in do_command(THD*, bool) /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/sql/sql_parse.cc:1417:17
          #17 0x562ffb9d5c6c in do_handle_one_connection(CONNECT*, bool) /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/sql/sql_connect.cc:1503:11
          #18 0x562ffb9d5746 in handle_one_connection /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/sql/sql_connect.cc:1415:5
          #19 0x562ffc826cd7 in pfs_spawn_thread /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/storage/perfschema/pfs.cc:2198:3
          #20 0x7facbc4dd1c3 in start_thread nptl/pthread_create.c:442:8
          #21 0x7facbc55d85b in clone3 misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
       
        Uninitialized value was stored to memory at
          <empty stack>
       
        Uninitialized value was created
          <empty stack>
       
      SUMMARY: MemorySanitizer: use-of-uninitialized-value /data/bld/preview-12.3/bb-12.3-MDEV-19683-to_date-msan/strings/strcoll.inl:241:9 in my_strnncoll_utf8mb4_general_ci
      

      Attachments

        Issue Links

          Activity

            People

              monty Michael Widenius
              elenst Elena Stepanova
              Votes:
              0 Vote for this issue
              Watchers:
              2 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.