[MDEV-4294] Valgrind warnings (uninitialised value(s)) in hp_mask / hp_search / my_bcmp on GROUP BY UNCOMPRESSED_LENGTH Created: 2013-03-18  Updated: 2022-09-08

Status: Open
Project: MariaDB Server
Component/s: None
Affects Version/s: 10.0.1, 5.5.30, 5.3.12
Fix Version/s: 5.5

Type: Bug Priority: Minor
Reporter: Elena Stepanova Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: upstream

Issue Links:
Relates

 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'


Generated at Thu Feb 08 06:55:18 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.