Bug #48097 Valgrind-Syscall param write(buf) points to uninitialised byte(s) /lib/ld-2.9.so
Submitted: 15 Oct 2009 19:31 Modified: 27 Oct 2009 23:08
Reporter: Patrick Crews Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server: Partitions Severity:S3 (Non-critical)
Version:5.5 WL#3352 OS:Any
Assigned to: Mikael Ronström CPU Architecture:Any
Tags: partitioning, uninitialized bytes, valgrind

[15 Oct 2009 19:31] Patrick Crews
Description:
==15631== Syscall param write(buf) points to uninitialised byte(s)
==15631==    at 0x40007F2: (within /lib/ld-2.9.so)
==15631==    by 0x905F3B1: my_b_flush_io_cache (mf_iocache.c:1752)
==15631==    by 0x87CA049: filesort(THD*, st_table*, st_sort_field*, unsigned int, SQL_SELECT*, unsigned long long, bool, unsigned long long*) (filesort.cc:289)
==15631==    by 0x85E66B9: create_sort_index(THD*, JOIN*, st_order*, unsigned long long, unsigned long long, bool) (sql_select.cc:13478)
==15631==    by 0x862E597: JOIN::exec() (sql_select.cc:2155)
==15631==    by 0x8620920: mysql_select(THD*, Item***, TABLE_LIST*, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) (sql_select.cc:2401)
==15631==    by 0x862F2C6: handle_select(THD*, st_lex*, select_result*, unsigned long) (sql_select.cc:270)
==15631==    by 0x849047E: mysql_execute_command(THD*) (sql_parse.cc:3247)
==15631==    by 0x84A4E86: mysql_parse(THD*, char const*, unsigned int, char const**) (sql_parse.cc:6002)
==15631==    by 0x84A762B: dispatch_command(enum_server_command, THD*, char*, unsigned int) (sql_parse.cc:1222)
==15631==    by 0x84AB280: do_command(THD*) (sql_parse.cc:855)
==15631==    by 0x846FF06: handle_one_connection (sql_connect.cc:1131)
==15631==    by 0x403F4FE: start_thread (in /lib/tls/i686/cmov/libpthread-2.9.so)
==15631==    by 0x41AC49D: clone (in /lib/tls/i686/cmov/libc-2.9.so)
==15631==  Address 0x186604c1 is 225 bytes inside a block of size 65,564 alloc'd
==15631==    at 0x4026FDE: malloc (vg_replace_malloc.c:207)
==15631==    by 0x90669DA: _mymalloc (safemalloc.c:137)
==15631==    by 0x9059030: init_io_cache (mf_iocache.c:235)
==15631==    by 0x906259A: open_cached_file (mf_cache.c:69)
==15631==    by 0x87C308E: write_keys(st_sort_param*, unsigned char**, unsigned int, st_io_cache*, st_io_cache*) (filesort.cc:694)
==15631==    by 0x87C7DBE: find_all_keys(st_sort_param*, SQL_SELECT*, unsigned char**, st_io_cache*, st_io_cache*, st_io_cache*) (filesort.cc:615)
==15631==    by 0x87C98FA: filesort(THD*, st_table*, st_sort_field*, unsigned int, SQL_SELECT*, unsigned long long, bool, unsigned long long*) (filesort.cc:246)
==15631==    by 0x85E66B9: create_sort_index(THD*, JOIN*, st_order*, unsigned long long, unsigned long long, bool) (sql_select.cc:13478)
==15631==    by 0x862E597: JOIN::exec() (sql_select.cc:2155)
==15631==    by 0x8620920: mysql_select(THD*, Item***, TABLE_LIST*, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) (sql_select.cc:2401)
==15631==    by 0x862F2C6: handle_select(THD*, st_lex*, select_result*, unsigned long) (sql_select.cc:270)
==15631==    by 0x849047E: mysql_execute_command(THD*) (sql_parse.cc:3247)
==15631==    by 0x84A4E86: mysql_parse(THD*, char const*, unsigned int, char const**) (sql_parse.cc:6002)
==15631==    by 0x84A762B: dispatch_command(enum_server_command, THD*, char*, unsigned int) (sql_parse.cc:1222)
==15631==    by 0x84AB280: do_command(THD*) (sql_parse.cc:855)
==15631==    by 0x846FF06: handle_one_connection (sql_connect.cc:1131)

How to repeat:
Use the RQG:
perl ./runall.pl --basedir=<path>/mysql-5.4 --gendata=conf/partition_pruning.zz
--threads=1 --valgrind --Validator=MarkErrorLog --queries=10000
--grammar=conf/partition_pruning.yy

Queries + valgrind output will be in the error log
[27 Oct 2009 23:08] Patrick Crews
Unable to repeat this bug with the latest version of the tree.