Bug #59154 | reading of freed memory during multiple user variable assignments | ||
---|---|---|---|
Submitted: | 24 Dec 2010 12:58 | Modified: | 16 Feb 2011 10:00 |
Reporter: | Shane Bester (Platinum Quality Contributor) | Email Updates: | |
Status: | Duplicate | Impact on me: | |
Category: | MySQL Server: DML | Severity: | S1 (Critical) |
Version: | 5.6.1, 5.6.2, 5.5.10, 5.1 | OS: | Any |
Assigned to: | Tor Didriksen | CPU Architecture: | Any |
[24 Dec 2010 12:58]
Shane Bester
[24 Dec 2010 13:21]
Valeriy Kravchuk
Verified with current mysql-trunk on 32-bit Ubuntu 10.04: Version: '5.6.2-m5-debug' socket: '/tmp/mysql.sock' port: 3306 Source distribution ==19802== Thread 18: ==19802== Invalid read of size 1 ==19802== at 0x40274E8: memmove (mc_replace_strmem.c:629) ==19802== by 0x83DD53E: update_hash(user_var_entry*, bool, void*, unsigned int, Item_result, charset_info_st*, Derivation, bool) (item_func.cc:4352) ==19802== by 0x83DD64C: Item_func_set_user_var::update_hash(void*, unsigned int, Item_result, charset_info_st*, Derivation, bool) (item_func.cc:4376) ==19802== by 0x83DE04C: Item_func_set_user_var::update() (item_func.cc:4652) ==19802== by 0x819C8EA: set_var_user::update(THD*) (set_var.cc:714) ==19802== by 0x819C40B: sql_set_variables(THD*, List<set_var_base>*) (set_var.cc:575) ==19802== by 0x8215E87: mysql_execute_command(THD*) (sql_parse.cc:3097) ==19802== by 0x821CBEB: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_parse.cc:5550) ==19802== by 0x8210802: dispatch_command(enum_server_command, THD*, char*, unsigned int) (sql_parse.cc:1078) ==19802== by 0x820FB8D: do_command(THD*) (sql_parse.cc:815) ==19802== by 0x82EDF66: do_handle_one_connection(THD*) (sql_connect.cc:748) ==19802== by 0x82EDB64: handle_one_connection (sql_connect.cc:684) ==19802== Address 0x614b067 is 55 bytes inside a block of size 56 free'd ==19802== at 0x4024B3A: free (vg_replace_malloc.c:366) ==19802== by 0x853932A: my_free (my_malloc.c:128) ==19802== by 0x83DD49E: update_hash(user_var_entry*, bool, void*, unsigned int, Item_result, charset_info_st*, Derivation, bool) (item_func.cc:4328) ==19802== by 0x83DD64C: Item_func_set_user_var::update_hash(void*, unsigned int, Item_result, charset_info_st*, Derivation, bool) (item_func.cc:4376) ==19802== by 0x83DDFB4: Item_func_set_user_var::update() (item_func.cc:4641) ==19802== by 0x819C8EA: set_var_user::update(THD*) (set_var.cc:714) ==19802== by 0x819C40B: sql_set_variables(THD*, List<set_var_base>*) (set_var.cc:575) ==19802== by 0x8215E87: mysql_execute_command(THD*) (sql_parse.cc:3097) ==19802== by 0x821CBEB: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_parse.cc:5550) ==19802== by 0x8210802: dispatch_command(enum_server_command, THD*, char*, unsigned int) (sql_parse.cc:1078) ==19802== by 0x820FB8D: do_command(THD*) (sql_parse.cc:815) ==19802== by 0x82EDF66: do_handle_one_connection(THD*) (sql_connect.cc:748) ==19802== ==19802== Invalid read of size 1 ==19802== at 0x40274FA: memmove (mc_replace_strmem.c:629) ==19802== by 0x83DD53E: update_hash(user_var_entry*, bool, void*, unsigned int, Item_result, charset_info_st*, Derivation, bool) (item_func.cc:4352) ==19802== by 0x83DD64C: Item_func_set_user_var::update_hash(void*, unsigned int, Item_result, charset_info_st*, Derivation, bool) (item_func.cc:4376) ==19802== by 0x83DE04C: Item_func_set_user_var::update() (item_func.cc:4652) ==19802== by 0x819C8EA: set_var_user::update(THD*) (set_var.cc:714) ==19802== by 0x819C40B: sql_set_variables(THD*, List<set_var_base>*) (set_var.cc:575) ==19802== by 0x8215E87: mysql_execute_command(THD*) (sql_parse.cc:3097) ==19802== by 0x821CBEB: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_parse.cc:5550) ==19802== by 0x8210802: dispatch_command(enum_server_command, THD*, char*, unsigned int) (sql_parse.cc:1078) ==19802== by 0x820FB8D: do_command(THD*) (sql_parse.cc:815) ==19802== by 0x82EDF66: do_handle_one_connection(THD*) (sql_connect.cc:748) ==19802== by 0x82EDB64: handle_one_connection (sql_connect.cc:684)
[25 Jan 2011 9:05]
Øystein Grøvlen
Also observed on 5.5 branch.
[8 Feb 2011 7:23]
Tor Didriksen
Not a regression, exists in 5.1 as well.