Valgrind error on tokudb.backup.tokudb_backup_exclude
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Percona Server moved to https://jira.percona.com/projects/PS | Status tracked in 5.7 | |||||
5.5 |
Invalid
|
Undecided
|
Unassigned | |||
5.6 |
Fix Released
|
High
|
Vlad Lesin | |||
5.7 |
Fix Released
|
High
|
Vlad Lesin |
Bug Description
On 5.6 trunk with Valgrind:
tokudb.
Test ended at 2017-02-28 01:09:48
Warnings:
Warning 1265 Data truncated for column 'line' at row 4
line
==25727== Thread 39:
==25727== Conditional jump or move depends on uninitialised value(s)
==25727== at 0x4C30F69: strlen (in /usr/lib/
==25727== by 0x66BAB93: std::__
==25727== by 0xE3093CD: tokudb_
==25727== by 0xE309722: tokudb_
==25727== by 0x4E4D27D: backup_
==25727== by 0x4E4ADBA: manager:
==25727== by 0x4E53C7B: tokubackup_
==25727== by 0xE30A8E4: tokudb_
==25727== by 0xE30ABD7: tokudb_
==25727== by 0x834F4D: sys_var_
==25727== by 0x754668: sys_var:
==25727== by 0x7555CD: set_var:
==25727== by 0x755262: sql_set_
==25727== by 0x81E067: mysql_execute_
==25727== by 0x825D26: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_parse.cc:7056)
==25727== by 0x816EAF: dispatch_
^ Found warnings in /mnt/workspace/
tags: | added: tokubackup valgrind |
There is also another valgrind report:
68 bytes in 1 blocks are definitely lost in loss record 4 of 5 pluginvar: :do_check( THD*, set_var*) (sql_plugin. cc:3524) :check( THD*, set_var*) (set_var.cc:241) :check( THD*) (set_var.cc:757) variables( THD*, List<set_ var_base> *, bool) (set_var.cc:665) command( THD*, bool) (sql_parse.cc:3896) command( THD*, COM_DATA const*, enum_server_ command) (sql_parse.cc:1493) handler_ per_thread. cc:312)
at 0x1874A91: my_malloc (my_malloc.c:62)
by 0x187510E: my_strdup (my_malloc.c:309)
by 0x2BA29DAA: ???
by 0x2BA29F1C: ???
by 0x2BA2BF80: ???
by 0x2BA2C7AB: ???
by 0x155F448: sys_var_
by 0x145CB7D: sys_var:
by 0x145DD0A: set_var:
by 0x145D76A: sql_set_
by 0x152D67F: mysql_execute_
by 0x1533116: mysql_parse(THD*, Parser_state*) (sql_parse.cc:5927)
by 0x1527936: dispatch_
by 0x152677C: do_command(THD*) (sql_parse.cc:1021)
by 0x166CAAF: handle_connection (connection_
by 0x18CDE7A: pfs_spawn_thread (pfs.cc:2188)
which is caused by the following code:
static void tokudb_ backup_ set_error( THD *thd, int error, const char *error_string) {
my_ strdup( tokudb_ backup_ mem_key, error_string, MYF(MY_FAE));
my_free( old_error_ string) ;
THDVAR(thd, last_error) = error;
char *old_error_string = THDVAR(thd, last_error_string);
if (error_string)
THDVAR(thd, last_error_string) =
else
THDVAR(thd, last_error_string) = NULL;
if (old_error_string)
}
i.e. the memory is allocated for error string and deallocated only when new error string is set.