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

Valgrind warnings (uninitialised value(s)) in hp_mask / hp_search / my_bcmp on GROUP BY UNCOMPRESSED_LENGTH

    Details

    • Type: Bug
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: 10.0.1, 5.5.30, 5.3.12
    • Fix Version/s: 5.3.13, 10.0, 5.5
    • Component/s: None
    • Labels:

      Description

      Also reproducible on MySQL-5.6 and filed as http://bugs.mysql.com/bug.php?id=68706

      CREATE TABLE t1 (pk CHAR(3) PRIMARY KEY) ENGINE=MyISAM;
      INSERT INTO t1 VALUES ('abc'),('def');
      SELECT MIN( pk ) FROM t1 GROUP BY UNCOMPRESSED_LENGTH( pk );
      
      ==28464== Thread 4:
      ==28464== Conditional jump or move depends on uninitialised value(s)
      ==28464==    at 0x9A93FE: hp_mask (hp_hash.c:215)
      ==28464==    by 0x9A9033: hp_search (hp_hash.c:116)
      ==28464==    by 0x9AD017: heap_rkey (hp_rkey.c:62)
      ==28464==    by 0x9A4EF9: ha_heap::index_read_map(unsigned char*, unsigned char const*, unsigned long, ha_rkey_function) (ha_heap.cc:290)
      ==28464==    by 0x56BFED: handler::ha_index_read_map(unsigned char*, unsigned char const*, unsigned long, ha_rkey_function) (sql_class.h:3678)
      ==28464==    by 0x737DE5: end_update(JOIN*, st_join_table*, bool) (sql_select.cc:17221)
      ==28464==    by 0x734D88: evaluate_join_record(JOIN*, st_join_table*, int) (sql_select.cc:16078)
      ==28464==    by 0x7347BF: sub_select(JOIN*, st_join_table*, bool) (sql_select.cc:15920)
      ==28464==    by 0x733E0B: do_select(JOIN*, List<Item>*, st_table*, Procedure*) (sql_select.cc:15541)
      ==28464==    by 0x712343: JOIN::exec() (sql_select.cc:2316)
      ==28464==    by 0x714A64: 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*) (sql_select.cc:2990)
      ==28464==    by 0x70B40E: handle_select(THD*, st_lex*, select_result*, unsigned long) (sql_select.cc:288)
      ==28464==    by 0x6968A2: execute_sqlcom_select(THD*, TABLE_LIST*) (sql_parse.cc:5172)
      ==28464==    by 0x68D661: mysql_execute_command(THD*) (sql_parse.cc:2305)
      ==28464==    by 0x69931C: mysql_parse(THD*, char*, unsigned int, char const**) (sql_parse.cc:6173)
      ==28464==    by 0x68AE05: dispatch_command(enum_server_command, THD*, char*, unsigned int) (sql_parse.cc:1243)
      ==28464== Conditional jump or move depends on uninitialised value(s)
      ==28464==    at 0xC0019D: my_bcmp (bcmp.c:60)
      ==28464==    by 0x9AA556: hp_key_cmp (hp_hash.c:712)
      ==28464==    by 0x9A9060: hp_search (hp_hash.c:120)
      ==28464==    by 0x9AD017: heap_rkey (hp_rkey.c:62)
      ==28464==    by 0x9A4EF9: ha_heap::index_read_map(unsigned char*, unsigned char const*, unsigned long, ha_rkey_function) (ha_heap.cc:290)
      ==28464==    by 0x56BFED: handler::ha_index_read_map(unsigned char*, unsigned char const*, unsigned long, ha_rkey_function) (sql_class.h:3678)
      ==28464==    by 0x737DE5: end_update(JOIN*, st_join_table*, bool) (sql_select.cc:17221)
      ==28464==    by 0x734D88: evaluate_join_record(JOIN*, st_join_table*, int) (sql_select.cc:16078)
      ==28464==    by 0x7347BF: sub_select(JOIN*, st_join_table*, bool) (sql_select.cc:15920)
      ==28464==    by 0x733E0B: do_select(JOIN*, List<Item>*, st_table*, Procedure*) (sql_select.cc:15541)
      ==28464==    by 0x712343: JOIN::exec() (sql_select.cc:2316)
      ==28464==    by 0x714A64: 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*) (sql_select.cc:2990)
      ==28464==    by 0x70B40E: handle_select(THD*, st_lex*, select_result*, unsigned long) (sql_select.cc:288)
      ==28464==    by 0x6968A2: execute_sqlcom_select(THD*, TABLE_LIST*) (sql_parse.cc:5172)
      ==28464==    by 0x68D661: mysql_execute_command(THD*) (sql_parse.cc:2305)
      ==28464==    by 0x69931C: mysql_parse(THD*, char*, unsigned int, char const**) (sql_parse.cc:6173)
      
      revision-id: sergii@pisem.net-20130318074424-frdzldas283cvx1w
      revno: 3638
      branch-nick: 5.3
      

      Also, a debug non-valgrind build, e.g. BUILD/compile-pentium-debug-max-no-ndb on maria/5.5, produces an unexpected error instead of valgrind values:

      CREATE TABLE t1 (pk CHAR(3) PRIMARY KEY) ENGINE=MyISAM;
      INSERT INTO t1 VALUES ('abc'),('def');
      SELECT MIN( pk ) FROM t1 GROUP BY UNCOMPRESSED_LENGTH( pk );
      bug.t1                                   [ fail ]
              Test ended at 2013-03-18 23:35:27
      
      CURRENT_TEST: bug.t1
      mysqltest: At line 5: query 'SELECT MIN( pk ) FROM t1 GROUP BY UNCOMPRESSED_LENGTH( pk )' failed: 1062: Duplicate entry '0' for key 'group_key'
      

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

              There are no comments yet on this issue.

                People

                • Assignee:
                  Unassigned
                  Reporter:
                  elenst Elena Stepanova
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  2 Start watching this issue

                  Dates

                  • Created:
                    Updated: