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

Valgrind warnings about uninitialised values in dtuple_validate or mi_rrnd or ma_rrnd upon UPDATE/DELETE .. ORDER BY from sequence

Details

    • Bug
    • Status: Open (View Workflow)
    • Major
    • Resolution: Unresolved
    • 10.3(EOL), 10.4(EOL), 10.5, 10.6, 10.9(EOL), 10.10(EOL), 10.11, 11.0(EOL), 11.1(EOL), 11.2(EOL), 11.4, 11.6(EOL)
    • 10.5, 10.6, 10.11, 11.4
    • Sequences
    • gcc (Debian 4.9.2-10) 4.9.2 valgrind-3.12.0.SVN

    Description

      Remember to run with --valgrind.

      CREATE SEQUENCE s ENGINE=MyISAM;
      DELETE IGNORE FROM s ORDER BY cache_size;
       
      # Cleanup
      DROP SEQUENCE s;
      

      10.3 765ae6e8

      ==25702== Thread 6:
      ==25702== Conditional jump or move depends on uninitialised value(s)
      ==25702==    at 0x123E5F4: mi_rrnd (mi_rrnd.c:40)
      ==25702==    by 0x1201E01: ha_myisam::rnd_pos(unsigned char*, unsigned char*) (ha_myisam.cc:1975)
      ==25702==    by 0x128F699: ha_sequence::rnd_pos(unsigned char*, unsigned char*) (ha_sequence.h:121)
      ==25702==    by 0xAD4339: handler::ha_rnd_pos(unsigned char*, unsigned char*) (handler.cc:2846)
      ==25702==    by 0xC5A42E: rr_from_pointers(READ_RECORD*) (records.cc:547)
      ==25702==    by 0x728E64: READ_RECORD::read_record() (records.h:73)
      ==25702==    by 0xC7870D: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:730)
      ==25702==    by 0x7C8591: mysql_execute_command(THD*) (sql_parse.cc:4927)
      ==25702==    by 0x7D273E: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8091)
      ==25702==    by 0x7BF8C5: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1857)
      ==25702==    by 0x7BE2AF: do_command(THD*) (sql_parse.cc:1403)
      ==25702==    by 0x92CBF0: do_handle_one_connection(CONNECT*) (sql_connect.cc:1402)
      ==25702==    by 0x92C974: handle_one_connection (sql_connect.cc:1308)
      ==25702==    by 0xD2438E: pfs_spawn_thread (pfs.cc:1862)
      ==25702==    by 0x4E3F493: start_thread (pthread_create.c:333)
      ==25702==    by 0x6EB893E: clone (clone.S:97)
      ==25702== Conditional jump or move depends on uninitialised value(s)
      ==25702==    at 0x1245367: _mi_read_rnd_static_record (mi_statrec.c:250)
      ==25702==    by 0x123E6DE: mi_rrnd (mi_rrnd.c:59)
      ==25702==    by 0x1201E01: ha_myisam::rnd_pos(unsigned char*, unsigned char*) (ha_myisam.cc:1975)
      ==25702==    by 0x128F699: ha_sequence::rnd_pos(unsigned char*, unsigned char*) (ha_sequence.h:121)
      ==25702==    by 0xAD4339: handler::ha_rnd_pos(unsigned char*, unsigned char*) (handler.cc:2846)
      ==25702==    by 0xC5A42E: rr_from_pointers(READ_RECORD*) (records.cc:547)
      ==25702==    by 0x728E64: READ_RECORD::read_record() (records.h:73)
      ==25702==    by 0xC7870D: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:730)
      ==25702==    by 0x7C8591: mysql_execute_command(THD*) (sql_parse.cc:4927)
      ==25702==    by 0x7D273E: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8091)
      ==25702==    by 0x7BF8C5: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1857)
      ==25702==    by 0x7BE2AF: do_command(THD*) (sql_parse.cc:1403)
      ==25702==    by 0x92CBF0: do_handle_one_connection(CONNECT*) (sql_connect.cc:1402)
      ==25702==    by 0x92C974: handle_one_connection (sql_connect.cc:1308)
      ==25702==    by 0xD2438E: pfs_spawn_thread (pfs.cc:1862)
      ==25702==    by 0x4E3F493: start_thread (pthread_create.c:333)
      

      --source include/have_innodb.inc
       
      CREATE SEQUENCE s ENGINE=InnoDB;
      DELETE IGNORE FROM s ORDER BY cache_size;
       
      # Cleanup
      DROP SEQUENCE s;
      

      10.3 765ae6e8

      ==25926== Thread 27:
      ==25926== Uninitialised byte(s) found during client check request
      ==25926==    at 0x1023053: dtuple_validate(dtuple_t const*) (data0data.cc:261)
      ==25926==    by 0xE1E84D: page_cur_search_with_match_bytes(buf_block_t const*, dict_index_t const*, dtuple_t const*, page_cur_mode_t, unsigned long*, unsigned long*, unsigned long*, unsigned long*, page_cur_t*) (page0cur.cc:599)
      ==25926==    by 0xFAFF11: btr_cur_search_to_nth_level_func(dict_index_t*, unsigned long, dtuple_t const*, page_cur_mode_t, unsigned long, btr_cur_t*, rw_lock_t*, char const*, unsigned int, mtr_t*, unsigned long) (btr0cur.cc:1841)
      ==25926==    by 0xEDC446: btr_pcur_open_with_no_init_func(dict_index_t*, dtuple_t const*, page_cur_mode_t, unsigned long, btr_pcur_t*, rw_lock_t*, char const*, unsigned int, mtr_t*) (btr0pcur.ic:527)
      ==25926==    by 0xEE842D: row_search_mvcc(unsigned char*, page_cur_mode_t, row_prebuilt_t*, unsigned long, unsigned long) (row0sel.cc:4602)
      ==25926==    by 0xD48B82: ha_innobase::index_read(unsigned char*, unsigned char const*, unsigned int, ha_rkey_function) (ha_innodb.cc:9332)
      ==25926==    by 0xD49CFC: ha_innobase::rnd_pos(unsigned char*, unsigned char*) (ha_innodb.cc:9834)
      ==25926==    by 0x128F699: ha_sequence::rnd_pos(unsigned char*, unsigned char*) (ha_sequence.h:121)
      ==25926==    by 0xAD4339: handler::ha_rnd_pos(unsigned char*, unsigned char*) (handler.cc:2846)
      ==25926==    by 0xC5A42E: rr_from_pointers(READ_RECORD*) (records.cc:547)
      ==25926==    by 0x728E64: READ_RECORD::read_record() (records.h:73)
      ==25926==    by 0xC7870D: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:730)
      ==25926==    by 0x7C8591: mysql_execute_command(THD*) (sql_parse.cc:4927)
      ==25926==    by 0x7D273E: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8091)
      ==25926==    by 0x7BF8C5: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1857)
      ==25926==    by 0x7BE2AF: do_command(THD*) (sql_parse.cc:1403)
      ==25926==  Address 0x19c1e0d8 is 8 bytes inside a block of size 16 alloc'd
      ==25926==    at 0x4C2BBAF: malloc (vg_replace_malloc.c:299)
      ==25926==    by 0x12C0E31: my_malloc (my_malloc.c:101)
      ==25926==    by 0xAC92C7: save_index(Sort_param*, unsigned int, SORT_INFO*) (filesort.cc:1288)
      ==25926==    by 0xAC62C1: filesort(THD*, TABLE*, Filesort*, Filesort_tracker*, JOIN*, unsigned long long) (filesort.cc:283)
      ==25926==    by 0xC77E30: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:636)
      ==25926==    by 0x7C8591: mysql_execute_command(THD*) (sql_parse.cc:4927)
      ==25926==    by 0x7D273E: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8091)
      ==25926==    by 0x7BF8C5: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1857)
      ==25926==    by 0x7BE2AF: do_command(THD*) (sql_parse.cc:1403)
      ==25926==    by 0x92CBF0: do_handle_one_connection(CONNECT*) (sql_connect.cc:1402)
      ==25926==    by 0x92C974: handle_one_connection (sql_connect.cc:1308)
      ==25926==    by 0xD2438E: pfs_spawn_thread (pfs.cc:1862)
      ==25926==    by 0x4E3F493: start_thread (pthread_create.c:333)
      ==25926==    by 0x6EB893E: clone (clone.S:97)
      ==25926== Conditional jump or move depends on uninitialised value(s)
      ==25926==    at 0xE5657E: cmp_dtuple_rec_with_match_bytes(dtuple_t const*, unsigned char const*, dict_index_t const*, unsigned long const*, unsigned long*, unsigned long*) (rem0cmp.cc:916)
      ==25926==    by 0xE1EEE0: page_cur_search_with_match_bytes(buf_block_t const*, dict_index_t const*, dtuple_t const*, page_cur_mode_t, unsigned long*, unsigned long*, unsigned long*, unsigned long*, page_cur_t*) (page0cur.cc:749)
      ==25926==    by 0xFAFF11: btr_cur_search_to_nth_level_func(dict_index_t*, unsigned long, dtuple_t const*, page_cur_mode_t, unsigned long, btr_cur_t*, rw_lock_t*, char const*, unsigned int, mtr_t*, unsigned long) (btr0cur.cc:1841)
      ==25926==    by 0xEDC446: btr_pcur_open_with_no_init_func(dict_index_t*, dtuple_t const*, page_cur_mode_t, unsigned long, btr_pcur_t*, rw_lock_t*, char const*, unsigned int, mtr_t*) (btr0pcur.ic:527)
      ==25926==    by 0xEE842D: row_search_mvcc(unsigned char*, page_cur_mode_t, row_prebuilt_t*, unsigned long, unsigned long) (row0sel.cc:4602)
      ==25926==    by 0xD48B82: ha_innobase::index_read(unsigned char*, unsigned char const*, unsigned int, ha_rkey_function) (ha_innodb.cc:9332)
      ==25926==    by 0xD49CFC: ha_innobase::rnd_pos(unsigned char*, unsigned char*) (ha_innodb.cc:9834)
      ==25926==    by 0x128F699: ha_sequence::rnd_pos(unsigned char*, unsigned char*) (ha_sequence.h:121)
      ==25926==    by 0xAD4339: handler::ha_rnd_pos(unsigned char*, unsigned char*) (handler.cc:2846)
      ==25926==    by 0xC5A42E: rr_from_pointers(READ_RECORD*) (records.cc:547)
      ==25926==    by 0x728E64: READ_RECORD::read_record() (records.h:73)
      ==25926==    by 0xC7870D: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:730)
      ==25926==    by 0x7C8591: mysql_execute_command(THD*) (sql_parse.cc:4927)
      ==25926==    by 0x7D273E: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8091)
      ==25926==    by 0x7BF8C5: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1857)
      ==25926==    by 0x7BE2AF: do_command(THD*) (sql_parse.cc:1403)
      ==25926== Conditional jump or move depends on uninitialised value(s)
      ==25926==    at 0xE56591: cmp_dtuple_rec_with_match_bytes(dtuple_t const*, unsigned char const*, dict_index_t const*, unsigned long const*, unsigned long*, unsigned long*) (rem0cmp.cc:919)
      ==25926==    by 0xE1EEE0: page_cur_search_with_match_bytes(buf_block_t const*, dict_index_t const*, dtuple_t const*, page_cur_mode_t, unsigned long*, unsigned long*, unsigned long*, unsigned long*, page_cur_t*) (page0cur.cc:749)
      ==25926==    by 0xFAFF11: btr_cur_search_to_nth_level_func(dict_index_t*, unsigned long, dtuple_t const*, page_cur_mode_t, unsigned long, btr_cur_t*, rw_lock_t*, char const*, unsigned int, mtr_t*, unsigned long) (btr0cur.cc:1841)
      ==25926==    by 0xEDC446: btr_pcur_open_with_no_init_func(dict_index_t*, dtuple_t const*, page_cur_mode_t, unsigned long, btr_pcur_t*, rw_lock_t*, char const*, unsigned int, mtr_t*) (btr0pcur.ic:527)
      ==25926==    by 0xEE842D: row_search_mvcc(unsigned char*, page_cur_mode_t, row_prebuilt_t*, unsigned long, unsigned long) (row0sel.cc:4602)
      ==25926==    by 0xD48B82: ha_innobase::index_read(unsigned char*, unsigned char const*, unsigned int, ha_rkey_function) (ha_innodb.cc:9332)
      ==25926==    by 0xD49CFC: ha_innobase::rnd_pos(unsigned char*, unsigned char*) (ha_innodb.cc:9834)
      ==25926==    by 0x128F699: ha_sequence::rnd_pos(unsigned char*, unsigned char*) (ha_sequence.h:121)
      ==25926==    by 0xAD4339: handler::ha_rnd_pos(unsigned char*, unsigned char*) (handler.cc:2846)
      ==25926==    by 0xC5A42E: rr_from_pointers(READ_RECORD*) (records.cc:547)
      ==25926==    by 0x728E64: READ_RECORD::read_record() (records.h:73)
      ==25926==    by 0xC7870D: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:730)
      ==25926==    by 0x7C8591: mysql_execute_command(THD*) (sql_parse.cc:4927)
      ==25926==    by 0x7D273E: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8091)
      ==25926==    by 0x7BF8C5: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1857)
      ==25926==    by 0x7BE2AF: do_command(THD*) (sql_parse.cc:1403)
      

      Aria additionally produces an unexpected error, so it needs to be masked in order to get Valgrind errors:

      CREATE SEQUENCE s ENGINE=Aria;
      --error ER_GET_ERRNO
      DELETE FROM s ORDER BY cache_size;
       
      # Cleanup
       
      DROP SEQUENCE s;
      

      10.4 d18ef804

      ERROR HY000: Got error 175 "File too short; Expected more data in file" from storage engine Aria
      ...
      ==5883== Thread 6:
      ==5883== Conditional jump or move depends on uninitialised value(s)
      ==5883==    at 0x126FB91: maria_rrnd (ma_rrnd.c:36)
      ==5883==    by 0x1214E27: ha_maria::rnd_pos(unsigned char*, unsigned char*) (ha_maria.cc:2552)
      ==5883==    by 0x13CC983: ha_sequence::rnd_pos(unsigned char*, unsigned char*) (ha_sequence.h:121)
      ==5883==    by 0xBE3B5F: handler::ha_rnd_pos(unsigned char*, unsigned char*) (handler.cc:2841)
      ==5883==    by 0xD76FE0: rr_from_pointers(READ_RECORD*) (records.cc:547)
      ==5883==    by 0x7EB208: READ_RECORD::read_record() (records.h:73)
      ==5883==    by 0xD958C6: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:804)
      ==5883==    by 0x89A778: mysql_execute_command(THD*) (sql_parse.cc:4977)
      ==5883==    by 0x8A58FA: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8149)
      ==5883==    by 0x890E85: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1828)
      ==5883==    by 0x88F645: do_command(THD*) (sql_parse.cc:1361)
      ==5883==    by 0xA0D0BA: do_handle_one_connection(CONNECT*) (sql_connect.cc:1398)
      ==5883==    by 0xA0CE1E: handle_one_connection (sql_connect.cc:1301)
      ==5883==    by 0x1393800: pfs_spawn_thread (pfs.cc:1862)
      ==5883==    by 0x4E3F4A3: start_thread (pthread_create.c:456)
      ==5883==    by 0x6937D0E: clone (clone.S:97)
      ==5883== Conditional jump or move depends on uninitialised value(s)
      ==5883==    at 0x1271377: _ma_read_static_record (ma_statrec.c:175)
      ==5883==    by 0x126FC42: maria_rrnd (ma_rrnd.c:44)
      ==5883==    by 0x1214E27: ha_maria::rnd_pos(unsigned char*, unsigned char*) (ha_maria.cc:2552)
      ==5883==    by 0x13CC983: ha_sequence::rnd_pos(unsigned char*, unsigned char*) (ha_sequence.h:121)
      ==5883==    by 0xBE3B5F: handler::ha_rnd_pos(unsigned char*, unsigned char*) (handler.cc:2841)
      ==5883==    by 0xD76FE0: rr_from_pointers(READ_RECORD*) (records.cc:547)
      ==5883==    by 0x7EB208: READ_RECORD::read_record() (records.h:73)
      ==5883==    by 0xD958C6: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:804)
      ==5883==    by 0x89A778: mysql_execute_command(THD*) (sql_parse.cc:4977)
      ==5883==    by 0x8A58FA: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8149)
      ==5883==    by 0x890E85: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1828)
      ==5883==    by 0x88F645: do_command(THD*) (sql_parse.cc:1361)
      ==5883==    by 0xA0D0BA: do_handle_one_connection(CONNECT*) (sql_connect.cc:1398)
      ==5883==    by 0xA0CE1E: handle_one_connection (sql_connect.cc:1301)
      ==5883==    by 0x1393800: pfs_spawn_thread (pfs.cc:1862)
      ==5883==    by 0x4E3F4A3: start_thread (pthread_create.c:456)
      ==5883== Syscall param pread64(offset) contains uninitialised byte(s)
      ==5883==    at 0x4E48923: ??? (syscall-template.S:84)
      ==5883==    by 0x1400867: my_pread (my_pread.c:66)
      ==5883==    by 0x11FFFBB: inline_mysql_file_pread (mysql_file.h:1206)
      ==5883==    by 0x12004B1: _ma_nommap_pread (ma_dynrec.c:162)
      ==5883==    by 0x12713F1: _ma_read_static_record (ma_statrec.c:183)
      ==5883==    by 0x126FC42: maria_rrnd (ma_rrnd.c:44)
      ==5883==    by 0x1214E27: ha_maria::rnd_pos(unsigned char*, unsigned char*) (ha_maria.cc:2552)
      ==5883==    by 0x13CC983: ha_sequence::rnd_pos(unsigned char*, unsigned char*) (ha_sequence.h:121)
      ==5883==    by 0xBE3B5F: handler::ha_rnd_pos(unsigned char*, unsigned char*) (handler.cc:2841)
      ==5883==    by 0xD76FE0: rr_from_pointers(READ_RECORD*) (records.cc:547)
      ==5883==    by 0x7EB208: READ_RECORD::read_record() (records.h:73)
      ==5883==    by 0xD958C6: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:804)
      ==5883==    by 0x89A778: mysql_execute_command(THD*) (sql_parse.cc:4977)
      ==5883==    by 0x8A58FA: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8149)
      ==5883==    by 0x890E85: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1828)
      ==5883==    by 0x88F645: do_command(THD*) (sql_parse.cc:1361)
      

      Attachments

        Issue Links

          Activity

            Starting from 11.0, there is an additional valgrind error upon the same test case (and the only error in MSAN):

            11.2 872ed5342 MSAN

            ==2835297==WARNING: MemorySanitizer: use-of-uninitialized-value
                #0 0x5614675297c2 in Sort_costs::compute_fastest_sort() /data/src/11.2-msan/sql/filesort_utils.cc:194:9
                #1 0x5614675297c2 in Sort_costs::compute_sort_costs(Sort_param*, unsigned long long, unsigned long, bool) /data/src/11.2-msan/sql/filesort_utils.cc:312:3
                #2 0x561467531095 in filesort(THD*, TABLE*, Filesort*, Filesort_tracker*, JOIN*, unsigned long long) /data/src/11.2-msan/sql/filesort.cc:290:9
                #3 0x5614665c610b in Sql_cmd_delete::delete_from_single_table(THD*) /data/src/11.2-msan/sql/sql_delete.cc:656:24
                #4 0x5614665d9ee9 in Sql_cmd_delete::execute_inner(THD*) /data/src/11.2-msan/sql/sql_delete.cc:1797:28
                #5 0x561466a1a7b8 in Sql_cmd_dml::execute(THD*) /data/src/11.2-msan/sql/sql_select.cc:33407:9
                #6 0x561466748d94 in mysql_execute_command(THD*, bool) /data/src/11.2-msan/sql/sql_parse.cc:4404:27
                #7 0x56146672f78a in mysql_parse(THD*, char*, unsigned int, Parser_state*) /data/src/11.2-msan/sql/sql_parse.cc:7810:18
                #8 0x561466723cd7 in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) /data/src/11.2-msan/sql/sql_parse.cc:1893:7
                #9 0x561466731b80 in do_command(THD*, bool) /data/src/11.2-msan/sql/sql_parse.cc:1406:17
                #10 0x561466de9adf in do_handle_one_connection(CONNECT*, bool) /data/src/11.2-msan/sql/sql_connect.cc:1445:11
                #11 0x561466de90b5 in handle_one_connection /data/src/11.2-msan/sql/sql_connect.cc:1347:5
                #12 0x5614681f9aba in pfs_spawn_thread /data/src/11.2-msan/storage/perfschema/pfs.cc:2201:3
                #13 0x7fd53420cfd3 in start_thread nptl/./nptl/pthread_create.c:442:8
                #14 0x7fd53428d5bb in clone3 misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
             
              Uninitialized value was stored to memory at
                #0 0x561467529462 in Sort_costs::compute_merge_sort_costs(Sort_param*, unsigned long long, unsigned long, bool) /data/src/11.2-msan/sql/filesort_utils.cc:276:38
             
              Memory was marked as uninitialized
                #0 0x5614661179ce in __msan_allocated_memory (/mnt8t/src/11.2-msan/sql/mariadbd+0x7c49ce)
                #1 0x5614675790b2 in handler::ha_open(TABLE*, char const*, int, unsigned int, st_mem_root*, List<String>*) /data/src/11.2-msan/sql/handler.cc:3550:20
             
            SUMMARY: MemorySanitizer: use-of-uninitialized-value /data/src/11.2-msan/sql/filesort_utils.cc:194:9 in Sort_costs::compute_fastest_sort()
            

            11.0 5e2d08b5 Valgrind

            ==2835019== Thread 6:
            ==2835019== Conditional jump or move depends on uninitialised value(s)
            ==2835019==    at 0xF0D25E: Sort_costs::compute_fastest_sort() (filesort_utils.cc:194)
            ==2835019==    by 0xF0D65B: Sort_costs::compute_sort_costs(Sort_param*, unsigned long long, unsigned long, bool) (filesort_utils.cc:312)
            ==2835019==    by 0xF0F60B: filesort(THD*, TABLE*, Filesort*, Filesort_tracker*, JOIN*, unsigned long long) (filesort.cc:290)
            ==2835019==    by 0xAB5DCD: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:685)
            ==2835019==    by 0xB225DB: mysql_execute_command(THD*, bool) (sql_parse.cc:4827)
            ==2835019==    by 0xB2D311: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_parse.cc:8030)
            ==2835019==    by 0xB18D9E: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) (sql_parse.cc:1894)
            ==2835019==    by 0xB176F7: do_command(THD*, bool) (sql_parse.cc:1407)
            ==2835019==    by 0xD1448F: do_handle_one_connection(CONNECT*, bool) (sql_connect.cc:1416)
            ==2835019==    by 0xD14204: handle_one_connection (sql_connect.cc:1318)
            ==2835019==    by 0x124ADED: pfs_spawn_thread (pfs.cc:2201)
            ==2835019==    by 0x522EFD3: start_thread (pthread_create.c:442)
            ==2835019==    by 0x52AE81F: clone (clone.S:100)
            ==2835019== Conditional jump or move depends on uninitialised value(s)
            ==2835019==    at 0x17DE92F: _mi_read_rnd_static_record (mi_statrec.c:250)
            ==2835019==    by 0x17D79C9: mi_rrnd (mi_rrnd.c:59)
            ==2835019==    by 0x179972B: ha_myisam::rnd_pos(unsigned char*, unsigned char*) (ha_myisam.cc:2097)
            ==2835019==    by 0x12D79BE: ha_sequence::rnd_pos(unsigned char*, unsigned char*) (ha_sequence.h:121)
            ==2835019==    by 0xF2677A: handler::ha_rnd_pos(unsigned char*, unsigned char*) (handler.cc:3651)
            ==2835019==    by 0x9D9772: rr_from_pointers(READ_RECORD*) (records.cc:610)
            ==2835019==    by 0x9C3408: READ_RECORD::read_record() (records.h:81)
            ==2835019==    by 0xAB6A6E: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:822)
            ==2835019==    by 0xB225DB: mysql_execute_command(THD*, bool) (sql_parse.cc:4827)
            ==2835019==    by 0xB2D311: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_parse.cc:8030)
            ==2835019==    by 0xB18D9E: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) (sql_parse.cc:1894)
            ==2835019==    by 0xB176F7: do_command(THD*, bool) (sql_parse.cc:1407)
            ==2835019==    by 0xD1448F: do_handle_one_connection(CONNECT*, bool) (sql_connect.cc:1416)
            ==2835019==    by 0xD14204: handle_one_connection (sql_connect.cc:1318)
            ==2835019==    by 0x124ADED: pfs_spawn_thread (pfs.cc:2201)
            ==2835019==    by 0x522EFD3: start_thread (pthread_create.c:442)
            ==2835019== Syscall param pread64(offset) contains uninitialised byte(s)
            ==2835019==    at 0x529C1A7: __libc_pread64 (pread64.c:25)
            ==2835019==    by 0x529C1A7: pread (pread64.c:23)
            ==2835019==    by 0x183A7AF: my_pread (my_pread.c:66)
            ==2835019==    by 0x17B7842: inline_mysql_file_pread (mysql_file.h:1196)
            ==2835019==    by 0x17B7FA7: mi_nommap_pread (mi_dynrec.c:202)
            ==2835019==    by 0x17DE695: _mi_read_static_record (mi_statrec.c:178)
            ==2835019==    by 0x17DEA18: _mi_read_rnd_static_record (mi_statrec.c:263)
            ==2835019==    by 0x17D79C9: mi_rrnd (mi_rrnd.c:59)
            ==2835019==    by 0x179972B: ha_myisam::rnd_pos(unsigned char*, unsigned char*) (ha_myisam.cc:2097)
            ==2835019==    by 0x12D79BE: ha_sequence::rnd_pos(unsigned char*, unsigned char*) (ha_sequence.h:121)
            ==2835019==    by 0xF2677A: handler::ha_rnd_pos(unsigned char*, unsigned char*) (handler.cc:3651)
            ==2835019==    by 0x9D9772: rr_from_pointers(READ_RECORD*) (records.cc:610)
            ==2835019==    by 0x9C3408: READ_RECORD::read_record() (records.h:81)
            ==2835019==    by 0xAB6A6E: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:822)
            ==2835019==    by 0xB225DB: mysql_execute_command(THD*, bool) (sql_parse.cc:4827)
            ==2835019==    by 0xB2D311: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_parse.cc:8030)
            ==2835019==    by 0xB18D9E: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) (sql_parse.cc:1894)
            

            elenst Elena Stepanova added a comment - Starting from 11.0, there is an additional valgrind error upon the same test case (and the only error in MSAN): 11.2 872ed5342 MSAN ==2835297==WARNING: MemorySanitizer: use-of-uninitialized-value #0 0x5614675297c2 in Sort_costs::compute_fastest_sort() /data/src/11.2-msan/sql/filesort_utils.cc:194:9 #1 0x5614675297c2 in Sort_costs::compute_sort_costs(Sort_param*, unsigned long long, unsigned long, bool) /data/src/11.2-msan/sql/filesort_utils.cc:312:3 #2 0x561467531095 in filesort(THD*, TABLE*, Filesort*, Filesort_tracker*, JOIN*, unsigned long long) /data/src/11.2-msan/sql/filesort.cc:290:9 #3 0x5614665c610b in Sql_cmd_delete::delete_from_single_table(THD*) /data/src/11.2-msan/sql/sql_delete.cc:656:24 #4 0x5614665d9ee9 in Sql_cmd_delete::execute_inner(THD*) /data/src/11.2-msan/sql/sql_delete.cc:1797:28 #5 0x561466a1a7b8 in Sql_cmd_dml::execute(THD*) /data/src/11.2-msan/sql/sql_select.cc:33407:9 #6 0x561466748d94 in mysql_execute_command(THD*, bool) /data/src/11.2-msan/sql/sql_parse.cc:4404:27 #7 0x56146672f78a in mysql_parse(THD*, char*, unsigned int, Parser_state*) /data/src/11.2-msan/sql/sql_parse.cc:7810:18 #8 0x561466723cd7 in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) /data/src/11.2-msan/sql/sql_parse.cc:1893:7 #9 0x561466731b80 in do_command(THD*, bool) /data/src/11.2-msan/sql/sql_parse.cc:1406:17 #10 0x561466de9adf in do_handle_one_connection(CONNECT*, bool) /data/src/11.2-msan/sql/sql_connect.cc:1445:11 #11 0x561466de90b5 in handle_one_connection /data/src/11.2-msan/sql/sql_connect.cc:1347:5 #12 0x5614681f9aba in pfs_spawn_thread /data/src/11.2-msan/storage/perfschema/pfs.cc:2201:3 #13 0x7fd53420cfd3 in start_thread nptl/./nptl/pthread_create.c:442:8 #14 0x7fd53428d5bb in clone3 misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81   Uninitialized value was stored to memory at #0 0x561467529462 in Sort_costs::compute_merge_sort_costs(Sort_param*, unsigned long long, unsigned long, bool) /data/src/11.2-msan/sql/filesort_utils.cc:276:38   Memory was marked as uninitialized #0 0x5614661179ce in __msan_allocated_memory (/mnt8t/src/11.2-msan/sql/mariadbd+0x7c49ce) #1 0x5614675790b2 in handler::ha_open(TABLE*, char const*, int, unsigned int, st_mem_root*, List<String>*) /data/src/11.2-msan/sql/handler.cc:3550:20   SUMMARY: MemorySanitizer: use-of-uninitialized-value /data/src/11.2-msan/sql/filesort_utils.cc:194:9 in Sort_costs::compute_fastest_sort() 11.0 5e2d08b5 Valgrind ==2835019== Thread 6: ==2835019== Conditional jump or move depends on uninitialised value(s) ==2835019== at 0xF0D25E: Sort_costs::compute_fastest_sort() (filesort_utils.cc:194) ==2835019== by 0xF0D65B: Sort_costs::compute_sort_costs(Sort_param*, unsigned long long, unsigned long, bool) (filesort_utils.cc:312) ==2835019== by 0xF0F60B: filesort(THD*, TABLE*, Filesort*, Filesort_tracker*, JOIN*, unsigned long long) (filesort.cc:290) ==2835019== by 0xAB5DCD: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:685) ==2835019== by 0xB225DB: mysql_execute_command(THD*, bool) (sql_parse.cc:4827) ==2835019== by 0xB2D311: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_parse.cc:8030) ==2835019== by 0xB18D9E: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) (sql_parse.cc:1894) ==2835019== by 0xB176F7: do_command(THD*, bool) (sql_parse.cc:1407) ==2835019== by 0xD1448F: do_handle_one_connection(CONNECT*, bool) (sql_connect.cc:1416) ==2835019== by 0xD14204: handle_one_connection (sql_connect.cc:1318) ==2835019== by 0x124ADED: pfs_spawn_thread (pfs.cc:2201) ==2835019== by 0x522EFD3: start_thread (pthread_create.c:442) ==2835019== by 0x52AE81F: clone (clone.S:100) ==2835019== Conditional jump or move depends on uninitialised value(s) ==2835019== at 0x17DE92F: _mi_read_rnd_static_record (mi_statrec.c:250) ==2835019== by 0x17D79C9: mi_rrnd (mi_rrnd.c:59) ==2835019== by 0x179972B: ha_myisam::rnd_pos(unsigned char*, unsigned char*) (ha_myisam.cc:2097) ==2835019== by 0x12D79BE: ha_sequence::rnd_pos(unsigned char*, unsigned char*) (ha_sequence.h:121) ==2835019== by 0xF2677A: handler::ha_rnd_pos(unsigned char*, unsigned char*) (handler.cc:3651) ==2835019== by 0x9D9772: rr_from_pointers(READ_RECORD*) (records.cc:610) ==2835019== by 0x9C3408: READ_RECORD::read_record() (records.h:81) ==2835019== by 0xAB6A6E: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:822) ==2835019== by 0xB225DB: mysql_execute_command(THD*, bool) (sql_parse.cc:4827) ==2835019== by 0xB2D311: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_parse.cc:8030) ==2835019== by 0xB18D9E: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) (sql_parse.cc:1894) ==2835019== by 0xB176F7: do_command(THD*, bool) (sql_parse.cc:1407) ==2835019== by 0xD1448F: do_handle_one_connection(CONNECT*, bool) (sql_connect.cc:1416) ==2835019== by 0xD14204: handle_one_connection (sql_connect.cc:1318) ==2835019== by 0x124ADED: pfs_spawn_thread (pfs.cc:2201) ==2835019== by 0x522EFD3: start_thread (pthread_create.c:442) ==2835019== Syscall param pread64(offset) contains uninitialised byte(s) ==2835019== at 0x529C1A7: __libc_pread64 (pread64.c:25) ==2835019== by 0x529C1A7: pread (pread64.c:23) ==2835019== by 0x183A7AF: my_pread (my_pread.c:66) ==2835019== by 0x17B7842: inline_mysql_file_pread (mysql_file.h:1196) ==2835019== by 0x17B7FA7: mi_nommap_pread (mi_dynrec.c:202) ==2835019== by 0x17DE695: _mi_read_static_record (mi_statrec.c:178) ==2835019== by 0x17DEA18: _mi_read_rnd_static_record (mi_statrec.c:263) ==2835019== by 0x17D79C9: mi_rrnd (mi_rrnd.c:59) ==2835019== by 0x179972B: ha_myisam::rnd_pos(unsigned char*, unsigned char*) (ha_myisam.cc:2097) ==2835019== by 0x12D79BE: ha_sequence::rnd_pos(unsigned char*, unsigned char*) (ha_sequence.h:121) ==2835019== by 0xF2677A: handler::ha_rnd_pos(unsigned char*, unsigned char*) (handler.cc:3651) ==2835019== by 0x9D9772: rr_from_pointers(READ_RECORD*) (records.cc:610) ==2835019== by 0x9C3408: READ_RECORD::read_record() (records.h:81) ==2835019== by 0xAB6A6E: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:822) ==2835019== by 0xB225DB: mysql_execute_command(THD*, bool) (sql_parse.cc:4827) ==2835019== by 0xB2D311: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_parse.cc:8030) ==2835019== by 0xB18D9E: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) (sql_parse.cc:1894)
            elenst Elena Stepanova added a comment - - edited

            The situation has become even more confusing with time.
            The basic scenario is the same:

            create sequence s;
            delete from s order by `increment`;
            drop sequence s;
            

            It causes different effects, depending on the build, engine, and luck.

            On a valgrind build with valgrind and MyISAM or Aria DELETE fails ER_ILLEGAL_HA (Storage engine doesn't have this option), and the test further fails with similar valgrind warnings as initially reported:

            10.4 e146940a

            ==1597233== Thread 6:
            ==1597233== Conditional jump or move depends on uninitialised value(s)
            ==1597233==    at 0x160E32A: _mi_read_rnd_static_record (mi_statrec.c:250)
            ==1597233==    by 0x1607436: mi_rrnd (mi_rrnd.c:59)
            ==1597233==    by 0x15C8D35: ha_myisam::rnd_pos(unsigned char*, unsigned char*) (ha_myisam.cc:2088)
            ==1597233==    by 0x10B1F58: ha_sequence::rnd_pos(unsigned char*, unsigned char*) (ha_sequence.h:121)
            ==1597233==    by 0xCF9E2A: handler::ha_rnd_pos(unsigned char*, unsigned char*) (handler.cc:2920)
            ==1597233==    by 0xEB8D99: rr_from_pointers(READ_RECORD*) (records.cc:551)
            ==1597233==    by 0x8CD724: READ_RECORD::read_record() (records.h:70)
            ==1597233==    by 0xEDB3DC: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:794)
            ==1597233==    by 0x98A98C: mysql_execute_command(THD*) (sql_parse.cc:4815)
            ==1597233==    by 0x995736: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8008)
            ==1597233==    by 0x980FBF: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1857)
            ==1597233==    by 0x97F826: do_command(THD*) (sql_parse.cc:1378)
            ==1597233==    by 0xB2732B: do_handle_one_connection(CONNECT*) (sql_connect.cc:1420)
            ==1597233==    by 0xB27093: handle_one_connection (sql_connect.cc:1324)
            ==1597233==    by 0x109D6A5: pfs_spawn_thread (pfs.cc:1869)
            ==1597233==    by 0x4D7DFD3: start_thread (pthread_create.c:442)
            ==1597233== Syscall param pread64(offset) contains uninitialised byte(s)
            ==1597233==    at 0x4DEB1A7: __libc_pread64 (pread64.c:25)
            ==1597233==    by 0x4DEB1A7: pread (pread64.c:23)
            ==1597233==    by 0x1669760: my_pread (my_pread.c:66)
            ==1597233==    by 0x15E6DA6: inline_mysql_file_pread (mysql_file.h:1213)
            ==1597233==    by 0x15E7541: mi_nommap_pread (mi_dynrec.c:202)
            ==1597233==    by 0x160E090: _mi_read_static_record (mi_statrec.c:178)
            ==1597233==    by 0x160E413: _mi_read_rnd_static_record (mi_statrec.c:263)
            ==1597233==    by 0x1607436: mi_rrnd (mi_rrnd.c:59)
            ==1597233==    by 0x15C8D35: ha_myisam::rnd_pos(unsigned char*, unsigned char*) (ha_myisam.cc:2088)
            ==1597233==    by 0x10B1F58: ha_sequence::rnd_pos(unsigned char*, unsigned char*) (ha_sequence.h:121)
            ==1597233==    by 0xCF9E2A: handler::ha_rnd_pos(unsigned char*, unsigned char*) (handler.cc:2920)
            ==1597233==    by 0xEB8D99: rr_from_pointers(READ_RECORD*) (records.cc:551)
            ==1597233==    by 0x8CD724: READ_RECORD::read_record() (records.h:70)
            ==1597233==    by 0xEDB3DC: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:794)
            ==1597233==    by 0x98A98C: mysql_execute_command(THD*) (sql_parse.cc:4815)
            ==1597233==    by 0x995736: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8008)
            ==1597233==    by 0x980FBF: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1857)
            

            with Aria

            ==1597574== Thread 6:
            ==1597574== Syscall param pread64(offset) contains uninitialised byte(s)
            ==1597574==    at 0x4DEB1A7: __libc_pread64 (pread64.c:25)
            ==1597574==    by 0x4DEB1A7: pread (pread64.c:23)
            ==1597574==    by 0x1669760: my_pread (my_pread.c:66)
            ==1597574==    by 0xF45CB6: inline_mysql_file_pread (mysql_file.h:1213)
            ==1597574==    by 0xF461D0: _ma_nommap_pread (ma_dynrec.c:162)
            ==1597574==    by 0xFC1930: _ma_read_static_record (ma_statrec.c:183)
            ==1597574==    by 0xFC0099: maria_rrnd (ma_rrnd.c:44)
            ==1597574==    by 0xF5B29F: ha_maria::rnd_pos(unsigned char*, unsigned char*) (ha_maria.cc:2521)
            ==1597574==    by 0x10B1F58: ha_sequence::rnd_pos(unsigned char*, unsigned char*) (ha_sequence.h:121)
            ==1597574==    by 0xCF9E2A: handler::ha_rnd_pos(unsigned char*, unsigned char*) (handler.cc:2920)
            ==1597574==    by 0xEB8D99: rr_from_pointers(READ_RECORD*) (records.cc:551)
            ==1597574==    by 0x8CD724: READ_RECORD::read_record() (records.h:70)
            ==1597574==    by 0xEDB3DC: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:794)
            ==1597574==    by 0x98A98C: mysql_execute_command(THD*) (sql_parse.cc:4815)
            ==1597574==    by 0x995736: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8008)
            ==1597574==    by 0x980FBF: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1857)
            ==1597574==    by 0x97F826: do_command(THD*) (sql_parse.cc:1378)
            

            On a valgrind build with valgrind and InnoDB DELETE also fails ER_ILLEGAL_HA, and DROP hangs, or at least it doesn't end in several minutes.

            On a debug/ASAN/UBSAN build with MyISAM or InnoDB DELETE always succeeds, no other errors occur. At least I haven't seen it fail even once in numerous attempts.

            On a debug/ASAN/UBSAN build with Aria DELETE always fails with ER_GET_ERRNO (1030, Got error from storage engine, Got error 175 "File too short; Expected more data in file"). At least I haven't seen it fail once in numerous attempts.

            create sequence s;
            delete from s order by `increment`;
            ERROR HY000: Got error 175 "File too short; Expected more data in file" from storage engine Aria
            # 1030
            drop sequence s;
            

            On a non-debug, non-instrumented build with MyISAM DELETE succeeds the first time and fails the 2nd time with ER_ILLEGAL_HA

            create sequence s;
            delete from s order by `increment`;
            drop sequence s;
            bug.t2                                   [ pass ]      1
            create sequence s;
            delete from s order by `increment`;
            bug.t2                                   [ 2 fail ]
                    Test ended at 2023-07-02 22:50:02
             
            CURRENT_TEST: bug.t2
            mysqltest: At line 2: query 'delete from s order by `increment`' failed: 1031: Storage engine SEQUENCE of the table `test`.`s` doesn't have this option
            

            On a non-debug, non-instrumented build with Aria DELETE fails interchangeably with ER_ILLEGAL_HA or ER_GET_ERRNO, but always fails.

            On a non-debug, non-instrumented build with InnoDB DELETE fails sporadically with ER_ILLEGAL_HA or succeeds.

            All results in this comment are from builds by gcc 12.2.0.

            elenst Elena Stepanova added a comment - - edited The situation has become even more confusing with time. The basic scenario is the same: create sequence s; delete from s order by `increment`; drop sequence s; It causes different effects, depending on the build, engine, and luck. On a valgrind build with valgrind and MyISAM or Aria DELETE fails ER_ILLEGAL_HA (Storage engine doesn't have this option), and the test further fails with similar valgrind warnings as initially reported: 10.4 e146940a ==1597233== Thread 6: ==1597233== Conditional jump or move depends on uninitialised value(s) ==1597233== at 0x160E32A: _mi_read_rnd_static_record (mi_statrec.c:250) ==1597233== by 0x1607436: mi_rrnd (mi_rrnd.c:59) ==1597233== by 0x15C8D35: ha_myisam::rnd_pos(unsigned char*, unsigned char*) (ha_myisam.cc:2088) ==1597233== by 0x10B1F58: ha_sequence::rnd_pos(unsigned char*, unsigned char*) (ha_sequence.h:121) ==1597233== by 0xCF9E2A: handler::ha_rnd_pos(unsigned char*, unsigned char*) (handler.cc:2920) ==1597233== by 0xEB8D99: rr_from_pointers(READ_RECORD*) (records.cc:551) ==1597233== by 0x8CD724: READ_RECORD::read_record() (records.h:70) ==1597233== by 0xEDB3DC: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:794) ==1597233== by 0x98A98C: mysql_execute_command(THD*) (sql_parse.cc:4815) ==1597233== by 0x995736: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8008) ==1597233== by 0x980FBF: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1857) ==1597233== by 0x97F826: do_command(THD*) (sql_parse.cc:1378) ==1597233== by 0xB2732B: do_handle_one_connection(CONNECT*) (sql_connect.cc:1420) ==1597233== by 0xB27093: handle_one_connection (sql_connect.cc:1324) ==1597233== by 0x109D6A5: pfs_spawn_thread (pfs.cc:1869) ==1597233== by 0x4D7DFD3: start_thread (pthread_create.c:442) ==1597233== Syscall param pread64(offset) contains uninitialised byte(s) ==1597233== at 0x4DEB1A7: __libc_pread64 (pread64.c:25) ==1597233== by 0x4DEB1A7: pread (pread64.c:23) ==1597233== by 0x1669760: my_pread (my_pread.c:66) ==1597233== by 0x15E6DA6: inline_mysql_file_pread (mysql_file.h:1213) ==1597233== by 0x15E7541: mi_nommap_pread (mi_dynrec.c:202) ==1597233== by 0x160E090: _mi_read_static_record (mi_statrec.c:178) ==1597233== by 0x160E413: _mi_read_rnd_static_record (mi_statrec.c:263) ==1597233== by 0x1607436: mi_rrnd (mi_rrnd.c:59) ==1597233== by 0x15C8D35: ha_myisam::rnd_pos(unsigned char*, unsigned char*) (ha_myisam.cc:2088) ==1597233== by 0x10B1F58: ha_sequence::rnd_pos(unsigned char*, unsigned char*) (ha_sequence.h:121) ==1597233== by 0xCF9E2A: handler::ha_rnd_pos(unsigned char*, unsigned char*) (handler.cc:2920) ==1597233== by 0xEB8D99: rr_from_pointers(READ_RECORD*) (records.cc:551) ==1597233== by 0x8CD724: READ_RECORD::read_record() (records.h:70) ==1597233== by 0xEDB3DC: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:794) ==1597233== by 0x98A98C: mysql_execute_command(THD*) (sql_parse.cc:4815) ==1597233== by 0x995736: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8008) ==1597233== by 0x980FBF: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1857) with Aria ==1597574== Thread 6: ==1597574== Syscall param pread64(offset) contains uninitialised byte(s) ==1597574== at 0x4DEB1A7: __libc_pread64 (pread64.c:25) ==1597574== by 0x4DEB1A7: pread (pread64.c:23) ==1597574== by 0x1669760: my_pread (my_pread.c:66) ==1597574== by 0xF45CB6: inline_mysql_file_pread (mysql_file.h:1213) ==1597574== by 0xF461D0: _ma_nommap_pread (ma_dynrec.c:162) ==1597574== by 0xFC1930: _ma_read_static_record (ma_statrec.c:183) ==1597574== by 0xFC0099: maria_rrnd (ma_rrnd.c:44) ==1597574== by 0xF5B29F: ha_maria::rnd_pos(unsigned char*, unsigned char*) (ha_maria.cc:2521) ==1597574== by 0x10B1F58: ha_sequence::rnd_pos(unsigned char*, unsigned char*) (ha_sequence.h:121) ==1597574== by 0xCF9E2A: handler::ha_rnd_pos(unsigned char*, unsigned char*) (handler.cc:2920) ==1597574== by 0xEB8D99: rr_from_pointers(READ_RECORD*) (records.cc:551) ==1597574== by 0x8CD724: READ_RECORD::read_record() (records.h:70) ==1597574== by 0xEDB3DC: mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*) (sql_delete.cc:794) ==1597574== by 0x98A98C: mysql_execute_command(THD*) (sql_parse.cc:4815) ==1597574== by 0x995736: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8008) ==1597574== by 0x980FBF: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1857) ==1597574== by 0x97F826: do_command(THD*) (sql_parse.cc:1378) On a valgrind build with valgrind and InnoDB DELETE also fails ER_ILLEGAL_HA , and DROP hangs, or at least it doesn't end in several minutes. On a debug/ASAN/UBSAN build with MyISAM or InnoDB DELETE always succeeds , no other errors occur. At least I haven't seen it fail even once in numerous attempts. On a debug/ASAN/UBSAN build with Aria DELETE always fails with ER_GET_ERRNO (1030, Got error from storage engine, Got error 175 "File too short; Expected more data in file"). At least I haven't seen it fail once in numerous attempts. create sequence s; delete from s order by `increment`; ERROR HY000: Got error 175 "File too short; Expected more data in file" from storage engine Aria # 1030 drop sequence s; On a non-debug, non-instrumented build with MyISAM DELETE succeeds the first time and fails the 2nd time with ER_ILLEGAL_HA create sequence s; delete from s order by `increment`; drop sequence s; bug.t2 [ pass ] 1 create sequence s; delete from s order by `increment`; bug.t2 [ 2 fail ] Test ended at 2023-07-02 22:50:02   CURRENT_TEST: bug.t2 mysqltest: At line 2: query 'delete from s order by `increment`' failed: 1031: Storage engine SEQUENCE of the table `test`.`s` doesn't have this option On a non-debug, non-instrumented build with Aria DELETE fails interchangeably with ER_ILLEGAL_HA or ER_GET_ERRNO , but always fails. On a non-debug, non-instrumented build with InnoDB DELETE fails sporadically with ER_ILLEGAL_HA or succeeds . All results in this comment are from builds by gcc 12.2.0.

            Things have changed a little bit, at least for Aria. The same test case doesn't produce error 175 "File too short; Expected more data in file" anymore, but instead

            10.4 e9c1701e

            DELETE FROM t1 ORDER BY cache_size;
            ERROR HY000: Storage engine SEQUENCE of the table `test`.`t1` doesn't have this option
            

            The valgrind errors are still in place.

            elenst Elena Stepanova added a comment - Things have changed a little bit, at least for Aria. The same test case doesn't produce error 175 "File too short; Expected more data in file" anymore, but instead 10.4 e9c1701e DELETE FROM t1 ORDER BY cache_size; ERROR HY000: Storage engine SEQUENCE of the table `test`.`t1` doesn't have this option The valgrind errors are still in place.

            People

              sanja Oleksandr Byelkin
              elenst Elena Stepanova
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:

                Git Integration

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