Although the "mysqldump" code is the same in 5.7 and 5.6, for some reason ASan does not report this problem in 5.6. However, when I ran 5.6 "mysqldump" under valgring, it reports "Invalid read/wrire". ************************************************************************************************************************** [yura@localhost percona-build]$ valgrind ./client/mysqldump -uroot -h127.0.0.1 -P13001 --skip-comments --innodb-optimize-keys test t1 ==57781== Memcheck, a memory error detector ==57781== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. ==57781== Using Valgrind-3.10.0 and LibVEX; rerun with -h for copyright info ==57781== Command: ./client/mysqldump -uroot -h127.0.0.1 -P13001 --skip-comments --innodb-optimize-keys test t1 ==57781== /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; DROP TABLE IF EXISTS `t1`; ==57781== Invalid write of size 2 ==57781== at 0x4C2E006: memcpy@GLIBC_2.2.5 (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==57781== by 0x40A0B3: skip_secondary_keys (mysqldump.c:2747) ==57781== by 0x40AF49: get_table_structure (mysqldump.c:3172) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== Address 0x800de86 is 262 bytes inside a block of size 263 alloc'd ==57781== at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==57781== by 0x45A489: my_malloc (my_malloc.c:38) ==57781== by 0x454745: alloc_root (my_alloc.c:173) ==57781== by 0x41F230: cli_read_rows (client.c:1547) ==57781== by 0x42530C: mysql_store_result (client.c:4222) ==57781== by 0x407063: mysql_query_with_error_report (mysqldump.c:1178) ==57781== by 0x40AA19: get_table_structure (mysqldump.c:3011) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== ==57781== Invalid read of size 1 ==57781== at 0x409FD8: skip_secondary_keys (mysqldump.c:2727) ==57781== by 0x40AF49: get_table_structure (mysqldump.c:3172) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== Address 0x800de87 is 0 bytes after a block of size 263 alloc'd ==57781== at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==57781== by 0x45A489: my_malloc (my_malloc.c:38) ==57781== by 0x454745: alloc_root (my_alloc.c:173) ==57781== by 0x41F230: cli_read_rows (client.c:1547) ==57781== by 0x42530C: mysql_store_result (client.c:4222) ==57781== by 0x407063: mysql_query_with_error_report (mysqldump.c:1178) ==57781== by 0x40AA19: get_table_structure (mysqldump.c:3011) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== ==57781== Invalid read of size 1 ==57781== at 0x409FE3: skip_secondary_keys (mysqldump.c:2727) ==57781== by 0x40AF49: get_table_structure (mysqldump.c:3172) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== Address 0x800de87 is 0 bytes after a block of size 263 alloc'd ==57781== at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==57781== by 0x45A489: my_malloc (my_malloc.c:38) ==57781== by 0x454745: alloc_root (my_alloc.c:173) ==57781== by 0x41F230: cli_read_rows (client.c:1547) ==57781== by 0x42530C: mysql_store_result (client.c:4222) ==57781== by 0x407063: mysql_query_with_error_report (mysqldump.c:1178) ==57781== by 0x40AA19: get_table_structure (mysqldump.c:3011) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== ==57781== Invalid read of size 1 ==57781== at 0x409FEE: skip_secondary_keys (mysqldump.c:2729) ==57781== by 0x40AF49: get_table_structure (mysqldump.c:3172) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== Address 0x800de87 is 0 bytes after a block of size 263 alloc'd ==57781== at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==57781== by 0x45A489: my_malloc (my_malloc.c:38) ==57781== by 0x454745: alloc_root (my_alloc.c:173) ==57781== by 0x41F230: cli_read_rows (client.c:1547) ==57781== by 0x42530C: mysql_store_result (client.c:4222) ==57781== by 0x407063: mysql_query_with_error_report (mysqldump.c:1178) ==57781== by 0x40AA19: get_table_structure (mysqldump.c:3011) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== ==57781== Invalid write of size 1 ==57781== at 0x409FF8: skip_secondary_keys (mysqldump.c:2730) ==57781== by 0x40AF49: get_table_structure (mysqldump.c:3172) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== Address 0x800de87 is 0 bytes after a block of size 263 alloc'd ==57781== at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==57781== by 0x45A489: my_malloc (my_malloc.c:38) ==57781== by 0x454745: alloc_root (my_alloc.c:173) ==57781== by 0x41F230: cli_read_rows (client.c:1547) ==57781== by 0x42530C: mysql_store_result (client.c:4222) ==57781== by 0x407063: mysql_query_with_error_report (mysqldump.c:1178) ==57781== by 0x40AA19: get_table_structure (mysqldump.c:3011) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== ==57781== Invalid read of size 1 ==57781== at 0x4C30C94: __strstr_sse42 (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==57781== by 0x40A398: skip_secondary_keys (mysqldump.c:2831) ==57781== by 0x40AF49: get_table_structure (mysqldump.c:3172) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== Address 0x800de87 is 0 bytes after a block of size 263 alloc'd ==57781== at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==57781== by 0x45A489: my_malloc (my_malloc.c:38) ==57781== by 0x454745: alloc_root (my_alloc.c:173) ==57781== by 0x41F230: cli_read_rows (client.c:1547) ==57781== by 0x42530C: mysql_store_result (client.c:4222) ==57781== by 0x407063: mysql_query_with_error_report (mysqldump.c:1178) ==57781== by 0x40AA19: get_table_structure (mysqldump.c:3011) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== ==57781== Invalid write of size 1 ==57781== at 0x40A45E: skip_secondary_keys (mysqldump.c:2852) ==57781== by 0x40AF49: get_table_structure (mysqldump.c:3172) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== Address 0x800de87 is 0 bytes after a block of size 263 alloc'd ==57781== at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==57781== by 0x45A489: my_malloc (my_malloc.c:38) ==57781== by 0x454745: alloc_root (my_alloc.c:173) ==57781== by 0x41F230: cli_read_rows (client.c:1547) ==57781== by 0x42530C: mysql_store_result (client.c:4222) ==57781== by 0x407063: mysql_query_with_error_report (mysqldump.c:1178) ==57781== by 0x40AA19: get_table_structure (mysqldump.c:3011) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== ==57781== Invalid read of size 1 ==57781== at 0x40A47F: skip_secondary_keys (mysqldump.c:2856) ==57781== by 0x40AF49: get_table_structure (mysqldump.c:3172) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== Address 0x800de87 is 0 bytes after a block of size 263 alloc'd ==57781== at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==57781== by 0x45A489: my_malloc (my_malloc.c:38) ==57781== by 0x454745: alloc_root (my_alloc.c:173) ==57781== by 0x41F230: cli_read_rows (client.c:1547) ==57781== by 0x42530C: mysql_store_result (client.c:4222) ==57781== by 0x407063: mysql_query_with_error_report (mysqldump.c:1178) ==57781== by 0x40AA19: get_table_structure (mysqldump.c:3011) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== ==57781== Invalid read of size 1 ==57781== at 0x40A49C: skip_secondary_keys (mysqldump.c:2717) ==57781== by 0x40AF49: get_table_structure (mysqldump.c:3172) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== Address 0x800de87 is 0 bytes after a block of size 263 alloc'd ==57781== at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==57781== by 0x45A489: my_malloc (my_malloc.c:38) ==57781== by 0x454745: alloc_root (my_alloc.c:173) ==57781== by 0x41F230: cli_read_rows (client.c:1547) ==57781== by 0x42530C: mysql_store_result (client.c:4222) ==57781== by 0x407063: mysql_query_with_error_report (mysqldump.c:1178) ==57781== by 0x40AA19: get_table_structure (mysqldump.c:3011) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; ==57781== Invalid read of size 1 ==57781== at 0x6318A94: vfprintf (in /usr/lib64/libc-2.17.so) ==57781== by 0x6321B76: fprintf (in /usr/lib64/libc-2.17.so) ==57781== by 0x40B01F: get_table_structure (mysqldump.c:3185) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== Address 0x800de87 is 0 bytes after a block of size 263 alloc'd ==57781== at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==57781== by 0x45A489: my_malloc (my_malloc.c:38) ==57781== by 0x454745: alloc_root (my_alloc.c:173) ==57781== by 0x41F230: cli_read_rows (client.c:1547) ==57781== by 0x42530C: mysql_store_result (client.c:4222) ==57781== by 0x407063: mysql_query_with_error_report (mysqldump.c:1178) ==57781== by 0x40AA19: get_table_structure (mysqldump.c:3011) ==57781== by 0x40CCA5: dump_table (mysqldump.c:3922) ==57781== by 0x4106AB: dump_selected_tables (mysqldump.c:5268) ==57781== by 0x412EBC: main (mysqldump.c:6489) ==57781== CREATE TABLE `t1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `a` (`a`), CONSTRAINT `a` FOREIGN KEY (`a`) REFERENCES `t1` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; LOCK TABLES `t1` WRITE; /*!40000 ALTER TABLE `t1` DISABLE KEYS */; /*!40000 ALTER TABLE `t1` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; ==57781== ==57781== HEAP SUMMARY: ==57781== in use at exit: 1,127 bytes in 22 blocks ==57781== total heap usage: 668 allocs, 646 frees, 1,200,948 bytes allocated ==57781== ==57781== LEAK SUMMARY: ==57781== definitely lost: 168 bytes in 1 blocks ==57781== indirectly lost: 789 bytes in 16 blocks ==57781== possibly lost: 0 bytes in 0 blocks ==57781== still reachable: 170 bytes in 5 blocks ==57781== suppressed: 0 bytes in 0 blocks ==57781== Rerun with --leak-check=full to see details of leaked memory ==57781== ==57781== For counts of detected and suppressed errors, rerun with: -v ==57781== ERROR SUMMARY: 11 errors from 10 contexts (suppressed: 2 from 2) **************************************************************************************************************************