[MDEV-18630] Conditional jump or move depends on uninitialised value in ib_push_warning / dict_create_foreign_constraints_low Created: 2019-02-18  Updated: 2019-02-18  Resolved: 2019-02-18

Status: Closed
Project: MariaDB Server
Component/s: Data Definition - Alter Table, Storage Engine - InnoDB, Storage Engine - XtraDB
Affects Version/s: 5.5, 10.0, 10.1, 10.2, 10.3, 10.4
Fix Version/s: 10.4.3, 10.2.23, 10.3.13

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Marko Mäkelä
Resolution: Fixed Votes: 0
Labels: valgrind


 Description   

--source include/have_innodb.inc
 
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
--error ER_CANT_CREATE_TABLE
ALTER IGNORE TABLE t1 ADD FOREIGN KEY (a) REFERENCES t2 (b);
 
DROP TABLE t1;

10.2 40b4f9c9 Valgrind Debug

==488== Thread 27:
==488== Conditional jump or move depends on uninitialised value(s)
==488==    at 0x4C2EDA9: strlen (vg_replace_strmem.c:454)
==488==    by 0x69FAD77: vfprintf (vfprintf.c:1637)
==488==    by 0x6A1BACA: vsprintf (iovsprintf.c:42)
==488==    by 0xC93065: ib_push_warning(trx_t*, unsigned long, char const*, ...) (ha_innodb.cc:22417)
==488==    by 0xF4FEE4: dict_create_foreign_constraints_low(trx_t*, mem_block_info_t*, charset_info_st const*, char const*, char const*, unsigned long) (dict0dict.cc:4889)
==488==    by 0xF5107C: dict_create_foreign_constraints(trx_t*, char const*, unsigned long, char const*, unsigned long) (dict0dict.cc:5276)
==488==    by 0xC82648: create_table_info_t::create_table(bool) (ha_innodb.cc:12663)
==488==    by 0xC97571: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*, bool, trx_t*) (ha_innodb.cc:12886)
==488==    by 0xC82D6C: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*) (ha_innodb.cc:12939)
==488==    by 0x950517: handler::ha_create(char const*, TABLE*, HA_CREATE_INFO*) (handler.cc:4408)
==488==    by 0x951442: ha_create_table(THD*, char const*, char const*, char const*, HA_CREATE_INFO*, st_mysql_const_unsigned_lex_string*) (handler.cc:4780)
==488==    by 0x796531: mysql_alter_table(THD*, char*, char*, HA_CREATE_INFO*, TABLE_LIST*, Alter_info*, unsigned int, st_order*, bool) (sql_table.cc:9507)
==488==    by 0x815C42: Sql_cmd_alter_table::execute(THD*) (sql_alter.cc:329)
==488==    by 0x6C608B: mysql_execute_command(THD*) (sql_parse.cc:6231)
==488==    by 0x6CAEEC: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8018)
==488==    by 0x6B8824: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1829)
==488== Conditional jump or move depends on uninitialised value(s)
==488==    at 0x4C2EDB8: strlen (vg_replace_strmem.c:454)
==488==    by 0x69FAD77: vfprintf (vfprintf.c:1637)
==488==    by 0x6A1BACA: vsprintf (iovsprintf.c:42)
==488==    by 0xC93065: ib_push_warning(trx_t*, unsigned long, char const*, ...) (ha_innodb.cc:22417)
==488==    by 0xF4FEE4: dict_create_foreign_constraints_low(trx_t*, mem_block_info_t*, charset_info_st const*, char const*, char const*, unsigned long) (dict0dict.cc:4889)
==488==    by 0xF5107C: dict_create_foreign_constraints(trx_t*, char const*, unsigned long, char const*, unsigned long) (dict0dict.cc:5276)
==488==    by 0xC82648: create_table_info_t::create_table(bool) (ha_innodb.cc:12663)
==488==    by 0xC97571: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*, bool, trx_t*) (ha_innodb.cc:12886)
==488==    by 0xC82D6C: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*) (ha_innodb.cc:12939)
==488==    by 0x950517: handler::ha_create(char const*, TABLE*, HA_CREATE_INFO*) (handler.cc:4408)
==488==    by 0x951442: ha_create_table(THD*, char const*, char const*, char const*, HA_CREATE_INFO*, st_mysql_const_unsigned_lex_string*) (handler.cc:4780)
==488==    by 0x796531: mysql_alter_table(THD*, char*, char*, HA_CREATE_INFO*, TABLE_LIST*, Alter_info*, unsigned int, st_order*, bool) (sql_table.cc:9507)
==488==    by 0x815C42: Sql_cmd_alter_table::execute(THD*) (sql_alter.cc:329)
==488==    by 0x6C608B: mysql_execute_command(THD*) (sql_parse.cc:6231)
==488==    by 0x6CAEEC: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8018)
==488==    by 0x6B8824: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1829)
==488== Conditional jump or move depends on uninitialised value(s)
==488==    at 0x115BDCE: my_vsnprintf_ex (my_vsnprintf.c:564)
==488==    by 0x6904BA: push_warning_printf(THD*, Sql_condition::enum_warning_level, unsigned int, char const*, ...) (sql_error.cc:798)
==488==    by 0xC930AB: ib_push_warning(trx_t*, unsigned long, char const*, ...) (ha_innodb.cc:22421)
==488==    by 0xF4FEE4: dict_create_foreign_constraints_low(trx_t*, mem_block_info_t*, charset_info_st const*, char const*, char const*, unsigned long) (dict0dict.cc:4889)
==488==    by 0xF5107C: dict_create_foreign_constraints(trx_t*, char const*, unsigned long, char const*, unsigned long) (dict0dict.cc:5276)
==488==    by 0xC82648: create_table_info_t::create_table(bool) (ha_innodb.cc:12663)
==488==    by 0xC97571: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*, bool, trx_t*) (ha_innodb.cc:12886)
==488==    by 0xC82D6C: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*) (ha_innodb.cc:12939)
==488==    by 0x950517: handler::ha_create(char const*, TABLE*, HA_CREATE_INFO*) (handler.cc:4408)
==488==    by 0x951442: ha_create_table(THD*, char const*, char const*, char const*, HA_CREATE_INFO*, st_mysql_const_unsigned_lex_string*) (handler.cc:4780)
==488==    by 0x796531: mysql_alter_table(THD*, char*, char*, HA_CREATE_INFO*, TABLE_LIST*, Alter_info*, unsigned int, st_order*, bool) (sql_table.cc:9507)
==488==    by 0x815C42: Sql_cmd_alter_table::execute(THD*) (sql_alter.cc:329)
==488==    by 0x6C608B: mysql_execute_command(THD*) (sql_parse.cc:6231)
==488==    by 0x6CAEEC: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8018)
==488==    by 0x6B8824: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1829)
==488==    by 0x6B712F: do_command(THD*) (sql_parse.cc:1379)
==488== Conditional jump or move depends on uninitialised value(s)
==488==    at 0x115B438: my_vsnprintf_ex (my_vsnprintf.c:566)
==488==    by 0x6904BA: push_warning_printf(THD*, Sql_condition::enum_warning_level, unsigned int, char const*, ...) (sql_error.cc:798)
==488==    by 0xC930AB: ib_push_warning(trx_t*, unsigned long, char const*, ...) (ha_innodb.cc:22421)
==488==    by 0xF4FEE4: dict_create_foreign_constraints_low(trx_t*, mem_block_info_t*, charset_info_st const*, char const*, char const*, unsigned long) (dict0dict.cc:4889)
==488==    by 0xF5107C: dict_create_foreign_constraints(trx_t*, char const*, unsigned long, char const*, unsigned long) (dict0dict.cc:5276)
==488==    by 0xC82648: create_table_info_t::create_table(bool) (ha_innodb.cc:12663)
==488==    by 0xC97571: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*, bool, trx_t*) (ha_innodb.cc:12886)
==488==    by 0xC82D6C: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*) (ha_innodb.cc:12939)
==488==    by 0x950517: handler::ha_create(char const*, TABLE*, HA_CREATE_INFO*) (handler.cc:4408)
==488==    by 0x951442: ha_create_table(THD*, char const*, char const*, char const*, HA_CREATE_INFO*, st_mysql_const_unsigned_lex_string*) (handler.cc:4780)
==488==    by 0x796531: mysql_alter_table(THD*, char*, char*, HA_CREATE_INFO*, TABLE_LIST*, Alter_info*, unsigned int, st_order*, bool) (sql_table.cc:9507)
==488==    by 0x815C42: Sql_cmd_alter_table::execute(THD*) (sql_alter.cc:329)
==488==    by 0x6C608B: mysql_execute_command(THD*) (sql_parse.cc:6231)
==488==    by 0x6CAEEC: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8018)
==488==    by 0x6B8824: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1829)
==488==    by 0x6B712F: do_command(THD*) (sql_parse.cc:1379)
==488== Conditional jump or move depends on uninitialised value(s)
==488==    at 0x4C2EDB8: strlen (vg_replace_strmem.c:454)
==488==    by 0x10E2985: strdup_root (my_alloc.c:442)
==488==    by 0x68F158: Sql_condition::set_builtin_message_text(char const*) (sql_error.cc:298)
==488==    by 0x68F11E: Sql_condition::set(unsigned int, char const*, Sql_condition::enum_warning_level, char const*) (sql_error.cc:285)
==488==    by 0x690134: Warning_info::push_warning(THD*, unsigned int, char const*, Sql_condition::enum_warning_level, char const*) (sql_error.cc:712)
==488==    by 0x67FE28: Diagnostics_area::push_warning(THD*, unsigned int, char const*, Sql_condition::enum_warning_level, char const*) (sql_error.h:851)
==488==    by 0x66FD6C: THD::raise_condition(unsigned int, char const*, Sql_condition::enum_warning_level, char const*) (sql_class.cc:1062)
==488==    by 0x6902FD: push_warning(THD*, Sql_condition::enum_warning_level, unsigned int, char const*) (sql_error.cc:765)
==488==    by 0x6904DC: push_warning_printf(THD*, Sql_condition::enum_warning_level, unsigned int, char const*, ...) (sql_error.cc:800)
==488==    by 0xC930AB: ib_push_warning(trx_t*, unsigned long, char const*, ...) (ha_innodb.cc:22421)
==488==    by 0xF4FEE4: dict_create_foreign_constraints_low(trx_t*, mem_block_info_t*, charset_info_st const*, char const*, char const*, unsigned long) (dict0dict.cc:4889)
==488==    by 0xF5107C: dict_create_foreign_constraints(trx_t*, char const*, unsigned long, char const*, unsigned long) (dict0dict.cc:5276)
==488==    by 0xC82648: create_table_info_t::create_table(bool) (ha_innodb.cc:12663)
==488==    by 0xC97571: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*, bool, trx_t*) (ha_innodb.cc:12886)
==488==    by 0xC82D6C: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*) (ha_innodb.cc:12939)
==488==    by 0x950517: handler::ha_create(char const*, TABLE*, HA_CREATE_INFO*) (handler.cc:4408)
==488== Conditional jump or move depends on uninitialised value(s)
==488==    at 0x4C2EDB8: strlen (vg_replace_strmem.c:454)
==488==    by 0x68F172: Sql_condition::set_builtin_message_text(char const*) (sql_error.cc:299)
==488==    by 0x68F11E: Sql_condition::set(unsigned int, char const*, Sql_condition::enum_warning_level, char const*) (sql_error.cc:285)
==488==    by 0x690134: Warning_info::push_warning(THD*, unsigned int, char const*, Sql_condition::enum_warning_level, char const*) (sql_error.cc:712)
==488==    by 0x67FE28: Diagnostics_area::push_warning(THD*, unsigned int, char const*, Sql_condition::enum_warning_level, char const*) (sql_error.h:851)
==488==    by 0x66FD6C: THD::raise_condition(unsigned int, char const*, Sql_condition::enum_warning_level, char const*) (sql_class.cc:1062)
==488==    by 0x6902FD: push_warning(THD*, Sql_condition::enum_warning_level, unsigned int, char const*) (sql_error.cc:765)
==488==    by 0x6904DC: push_warning_printf(THD*, Sql_condition::enum_warning_level, unsigned int, char const*, ...) (sql_error.cc:800)
==488==    by 0xC930AB: ib_push_warning(trx_t*, unsigned long, char const*, ...) (ha_innodb.cc:22421)
==488==    by 0xF4FEE4: dict_create_foreign_constraints_low(trx_t*, mem_block_info_t*, charset_info_st const*, char const*, char const*, unsigned long) (dict0dict.cc:4889)
==488==    by 0xF5107C: dict_create_foreign_constraints(trx_t*, char const*, unsigned long, char const*, unsigned long) (dict0dict.cc:5276)
==488==    by 0xC82648: create_table_info_t::create_table(bool) (ha_innodb.cc:12663)
==488==    by 0xC97571: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*, bool, trx_t*) (ha_innodb.cc:12886)
==488==    by 0xC82D6C: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*) (ha_innodb.cc:12939)
==488==    by 0x950517: handler::ha_create(char const*, TABLE*, HA_CREATE_INFO*) (handler.cc:4408)
==488==    by 0x951442: ha_create_table(THD*, char const*, char const*, char const*, HA_CREATE_INFO*, st_mysql_const_unsigned_lex_string*) (handler.cc:4780)
==488== Conditional jump or move depends on uninitialised value(s)
==488==    at 0x4C2EDA9: strlen (vg_replace_strmem.c:454)
==488==    by 0x69FAD77: vfprintf (vfprintf.c:1637)
==488==    by 0x6A01156: fprintf (fprintf.c:32)
==488==    by 0xF4C8FE: dict_foreign_error_report_low(_IO_FILE*, char const*) (dict0dict.cc:3412)
==488==    by 0xF4FF31: dict_create_foreign_constraints_low(trx_t*, mem_block_info_t*, charset_info_st const*, char const*, char const*, unsigned long) (dict0dict.cc:4891)
==488==    by 0xF5107C: dict_create_foreign_constraints(trx_t*, char const*, unsigned long, char const*, unsigned long) (dict0dict.cc:5276)
==488==    by 0xC82648: create_table_info_t::create_table(bool) (ha_innodb.cc:12663)
==488==    by 0xC97571: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*, bool, trx_t*) (ha_innodb.cc:12886)
==488==    by 0xC82D6C: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*) (ha_innodb.cc:12939)
==488==    by 0x950517: handler::ha_create(char const*, TABLE*, HA_CREATE_INFO*) (handler.cc:4408)
==488==    by 0x951442: ha_create_table(THD*, char const*, char const*, char const*, HA_CREATE_INFO*, st_mysql_const_unsigned_lex_string*) (handler.cc:4780)
==488==    by 0x796531: mysql_alter_table(THD*, char*, char*, HA_CREATE_INFO*, TABLE_LIST*, Alter_info*, unsigned int, st_order*, bool) (sql_table.cc:9507)
==488==    by 0x815C42: Sql_cmd_alter_table::execute(THD*) (sql_alter.cc:329)
==488==    by 0x6C608B: mysql_execute_command(THD*) (sql_parse.cc:6231)
==488==    by 0x6CAEEC: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8018)
==488==    by 0x6B8824: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1829)
==488== Conditional jump or move depends on uninitialised value(s)
==488==    at 0x4C2EDB8: strlen (vg_replace_strmem.c:454)
==488==    by 0x69FAD77: vfprintf (vfprintf.c:1637)
==488==    by 0x6A01156: fprintf (fprintf.c:32)
==488==    by 0xF4C8FE: dict_foreign_error_report_low(_IO_FILE*, char const*) (dict0dict.cc:3412)
==488==    by 0xF4FF31: dict_create_foreign_constraints_low(trx_t*, mem_block_info_t*, charset_info_st const*, char const*, char const*, unsigned long) (dict0dict.cc:4891)
==488==    by 0xF5107C: dict_create_foreign_constraints(trx_t*, char const*, unsigned long, char const*, unsigned long) (dict0dict.cc:5276)
==488==    by 0xC82648: create_table_info_t::create_table(bool) (ha_innodb.cc:12663)
==488==    by 0xC97571: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*, bool, trx_t*) (ha_innodb.cc:12886)
==488==    by 0xC82D6C: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*) (ha_innodb.cc:12939)
==488==    by 0x950517: handler::ha_create(char const*, TABLE*, HA_CREATE_INFO*) (handler.cc:4408)
==488==    by 0x951442: ha_create_table(THD*, char const*, char const*, char const*, HA_CREATE_INFO*, st_mysql_const_unsigned_lex_string*) (handler.cc:4780)
==488==    by 0x796531: mysql_alter_table(THD*, char*, char*, HA_CREATE_INFO*, TABLE_LIST*, Alter_info*, unsigned int, st_order*, bool) (sql_table.cc:9507)
==488==    by 0x815C42: Sql_cmd_alter_table::execute(THD*) (sql_alter.cc:329)
==488==    by 0x6C608B: mysql_execute_command(THD*) (sql_parse.cc:6231)
==488==    by 0x6CAEEC: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8018)
==488==    by 0x6B8824: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1829)
==488== Conditional jump or move depends on uninitialised value(s)
==488==    at 0x4C2EDA9: strlen (vg_replace_strmem.c:454)
==488==    by 0x69FAD77: vfprintf (vfprintf.c:1637)
==488==    by 0x6A01156: fprintf (fprintf.c:32)
==488==    by 0xF4FF6E: dict_create_foreign_constraints_low(trx_t*, mem_block_info_t*, charset_info_st const*, char const*, char const*, unsigned long) (dict0dict.cc:4895)
==488==    by 0xF5107C: dict_create_foreign_constraints(trx_t*, char const*, unsigned long, char const*, unsigned long) (dict0dict.cc:5276)
==488==    by 0xC82648: create_table_info_t::create_table(bool) (ha_innodb.cc:12663)
==488==    by 0xC97571: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*, bool, trx_t*) (ha_innodb.cc:12886)
==488==    by 0xC82D6C: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*) (ha_innodb.cc:12939)
==488==    by 0x950517: handler::ha_create(char const*, TABLE*, HA_CREATE_INFO*) (handler.cc:4408)
==488==    by 0x951442: ha_create_table(THD*, char const*, char const*, char const*, HA_CREATE_INFO*, st_mysql_const_unsigned_lex_string*) (handler.cc:4780)
==488==    by 0x796531: mysql_alter_table(THD*, char*, char*, HA_CREATE_INFO*, TABLE_LIST*, Alter_info*, unsigned int, st_order*, bool) (sql_table.cc:9507)
==488==    by 0x815C42: Sql_cmd_alter_table::execute(THD*) (sql_alter.cc:329)
==488==    by 0x6C608B: mysql_execute_command(THD*) (sql_parse.cc:6231)
==488==    by 0x6CAEEC: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8018)
==488==    by 0x6B8824: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1829)
==488==    by 0x6B712F: do_command(THD*) (sql_parse.cc:1379)
==488== Conditional jump or move depends on uninitialised value(s)
==488==    at 0x4C2EDB8: strlen (vg_replace_strmem.c:454)
==488==    by 0x69FAD77: vfprintf (vfprintf.c:1637)
==488==    by 0x6A01156: fprintf (fprintf.c:32)
==488==    by 0xF4FF6E: dict_create_foreign_constraints_low(trx_t*, mem_block_info_t*, charset_info_st const*, char const*, char const*, unsigned long) (dict0dict.cc:4895)
==488==    by 0xF5107C: dict_create_foreign_constraints(trx_t*, char const*, unsigned long, char const*, unsigned long) (dict0dict.cc:5276)
==488==    by 0xC82648: create_table_info_t::create_table(bool) (ha_innodb.cc:12663)
==488==    by 0xC97571: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*, bool, trx_t*) (ha_innodb.cc:12886)
==488==    by 0xC82D6C: ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*) (ha_innodb.cc:12939)
==488==    by 0x950517: handler::ha_create(char const*, TABLE*, HA_CREATE_INFO*) (handler.cc:4408)
==488==    by 0x951442: ha_create_table(THD*, char const*, char const*, char const*, HA_CREATE_INFO*, st_mysql_const_unsigned_lex_string*) (handler.cc:4780)
==488==    by 0x796531: mysql_alter_table(THD*, char*, char*, HA_CREATE_INFO*, TABLE_LIST*, Alter_info*, unsigned int, st_order*, bool) (sql_table.cc:9507)
==488==    by 0x815C42: Sql_cmd_alter_table::execute(THD*) (sql_alter.cc:329)
==488==    by 0x6C608B: mysql_execute_command(THD*) (sql_parse.cc:6231)
==488==    by 0x6CAEEC: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8018)
==488==    by 0x6B8824: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1829)
==488==    by 0x6B712F: do_command(THD*) (sql_parse.cc:1379)



 Comments   
Comment by Marko Mäkelä [ 2019-02-18 ]

Garbage would be displayed to SHOW WARNINGS if the REFERENCES clause in ALTER TABLE is referring to a non-existent table.

Generated at Thu Feb 08 08:45:34 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.