[MDEV-18735] promote_first_timestamp_column: Conditional jump or move depends on uninitialised value Created: 2019-02-25  Updated: 2023-11-28

Status: Open
Project: MariaDB Server
Component/s: Data Definition - Alter Table, Temporal Types
Affects Version/s: 10.4, 10.5, 10.6, 10.10, 10.11, 11.0, 11.1, 11.2
Fix Version/s: 10.4, 10.5, 10.6, 10.11, 11.0, 11.1, 11.2

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Alexander Barkov
Resolution: Unresolved Votes: 0
Labels: None


 Description   

Run with --valgrind-mysqld

CREATE TABLE t1 (f TIMESTAMP DEFAULT '2000-01-01 00:00:00');
ALTER TABLE t1 ALTER COLUMN f DROP DEFAULT;
 
# Cleanup
DROP TABLE t1;

10.4 fb01193c Valgrind

==31285== Conditional jump or move depends on uninitialised value(s)
==31285==    at 0x96B434: promote_first_timestamp_column(List<Create_field>*) (sql_table.cc:3019)
==31285==    by 0x97E3AA: mysql_alter_table(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, HA_CREATE_INFO*, TABLE_LIST*, Alter_info*, unsigned int, st_order*, bool) (sql_table.cc:9619)
==31285==    by 0xA116FF: Sql_cmd_alter_table::execute(THD*) (sql_alter.cc:499)
==31285==    by 0x89C20D: mysql_execute_command(THD*) (sql_parse.cc:6346)
==31285==    by 0x8A13B5: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8157)
==31285==    by 0x88C957: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1829)
==31285==    by 0x88B12B: do_command(THD*) (sql_parse.cc:1358)
==31285==    by 0xA0AD7A: do_handle_one_connection(CONNECT*) (sql_connect.cc:1399)
==31285==    by 0xA0AAEB: handle_one_connection (sql_connect.cc:1302)
==31285==    by 0xF25A54: pfs_spawn_thread (pfs.cc:1862)
==31285==    by 0x4E3F493: start_thread (pthread_create.c:333)
==31285==    by 0x6A9A93E: clone (clone.S:97)

Not reproducible on 10.3.



 Comments   
Comment by Elena Stepanova [ 2023-09-10 ]

Still reproducible on all versions; but it requires --explicit-defaults-for-timestamp=OFF, while starting from 10.10 it is ON, so it needs to be unset to reproduce on 10.10+.

SET explicit_defaults_for_timestamp= OFF;
 
CREATE TABLE t1 (f TIMESTAMP DEFAULT '2000-01-01 00:00:00');
ALTER TABLE t1 ALTER COLUMN f DROP DEFAULT;
 
# Cleanup
DROP TABLE t1;

11.2 9b9067fcc0d

==3017508==WARNING: MemorySanitizer: use-of-uninitialized-value
    #0 0x557e742da056 in promote_first_timestamp_column(List<Create_field>*) /data/src/11.2-msan/sql/sql_table.cc:2327:44
    #1 0x557e74323529 in mysql_alter_table(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, Table_specification_st*, TABLE_LIST*, Recreate_info*, Alter_info*, unsigned int, st_order*, bool, bool) /data/src/11.2-msan/sql/sql_table.cc:10672:5
    #2 0x557e745baef7 in Sql_cmd_alter_table::execute(THD*) /data/src/11.2-msan/sql/sql_alter.cc:615:11
    #3 0x557e73ef41bf in mysql_execute_command(THD*, bool) /data/src/11.2-msan/sql/sql_parse.cc:5775:26
    #4 0x557e73edb30a in mysql_parse(THD*, char*, unsigned int, Parser_state*) /data/src/11.2-msan/sql/sql_parse.cc:7811:18
    #5 0x557e73ecf857 in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) /data/src/11.2-msan/sql/sql_parse.cc:1893:7
    #6 0x557e73edd700 in do_command(THD*, bool) /data/src/11.2-msan/sql/sql_parse.cc:1406:17
    #7 0x557e74594c3f in do_handle_one_connection(CONNECT*, bool) /data/src/11.2-msan/sql/sql_connect.cc:1445:11
    #8 0x557e74594215 in handle_one_connection /data/src/11.2-msan/sql/sql_connect.cc:1347:5
    #9 0x557e759a49aa in pfs_spawn_thread /data/src/11.2-msan/storage/perfschema/pfs.cc:2201:3
    #10 0x7f5ece9f2fd3 in start_thread nptl/./nptl/pthread_create.c:442:8
    #11 0x7f5ecea735bb in clone3 misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
 
  Memory was marked as uninitialized
    #0 0x557e738c39be in __msan_allocated_memory (/mnt8t/src/11.2-msan/sql/mariadbd+0x7c49be)
    #1 0x557e76c78a91 in my_malloc /data/src/11.2-msan/mysys/my_malloc.c:116:7
 
SUMMARY: MemorySanitizer: use-of-uninitialized-value /data/src/11.2-msan/sql/sql_table.cc:2327:44 in promote_first_timestamp_column(List<Create_field>*)

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