[MDEV-8020] innodb.innodb-mdev-7055 produces valgrind warnings in buildbot Created: 2015-04-19  Updated: 2015-04-28  Resolved: 2015-04-28

Status: Closed
Project: MariaDB Server
Component/s: Tests
Affects Version/s: 5.5
Fix Version/s: 5.5.43

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Jan Lindström (Inactive)
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Blocks
blocks MDEV-7069 Fix buildbot failures in main server ... Stalled

 Description   

It's been discussed earlier, but the has been no progress so far.

http://buildbot.askmonty.org/buildbot/builders/work-amd64-valgrind/builds/7050/steps/test/logs/stdio

innodb.innodb-mdev-7055 'innodb_plugin'  w1 [ fail ]  Found warnings/errors in server log file!
        Test ended at 2015-04-16 03:36:08
line
==2731== Thread 14:
==2731== Syscall param pwrite64(buf) points to uninitialised byte(s)
==2731==    at 0x4E3C3C8: ??? (in /lib64/libpthread-2.9.so)
==2731==    by 0x9C320E2: os_file_write_func (os0file.c:2409)
==2731==    by 0x9C37157: pfs_os_aio_func (os0file.ic:246)
==2731==    by 0x9BFA927: fil_io (fil0fil.c:4706)
==2731==    by 0x9C24217: log_group_write_buf (log0log.c:1416)
==2731==    by 0x9C25119: log_write_up_to (log0log.c:1598)
==2731==    by 0x9CA9D4B: trx_commit_complete_for_mysql (trx0trx.c:1724)
==2731==    by 0x9C5BDFC: innobase_commit(handlerton*, THD*, bool) (ha_innodb.cc:2951)
==2731==    by 0x74E033: commit_one_phase_2(THD*, bool, THD_TRANS*, bool) (handler.cc:1407)
==2731==    by 0x74E1DA: ha_commit_one_phase(THD*, bool) (handler.cc:1390)
==2731==    by 0x74EB5D: ha_commit_trans(THD*, bool) (handler.cc:1278)
==2731==    by 0x6BC730: trans_commit_stmt(THD*) (transaction.cc:345)
==2731==    by 0x5C9917: mysql_execute_command(THD*) (sql_parse.cc:4574)
==2731==    by 0x5CF2C4: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_parse.cc:5909)
==2731==    by 0x5D1A29: dispatch_command(enum_server_command, THD*, char*, unsigned int) (sql_parse.cc:1079)
==2731==    by 0x5D22DD: do_command(THD*) (sql_parse.cc:793)
==2731==  Address 0xb3a829d is 82,541 bytes inside a block of size 1,049,240 alloc'd
==2731==    at 0x4C25DD6: malloc (vg_replace_malloc.c:270)
==2731==    by 0x9CB1513: ut_malloc_low (ut0mem.c:115)
==2731==    by 0x9C2D090: mem_heap_create_block (mem0mem.c:333)
==2731==    by 0x9C2D3C2: mem_heap_create_func (mem0mem.ic:439)
==2731==    by 0x9C2D730: mem_alloc_func (mem0mem.ic:525)
==2731==    by 0x9C2466A: log_init (log0log.c:894)
==2731==    by 0x9C97D34: innobase_start_or_create_for_mysql (srv0start.c:1450)
==2731==    by 0x9C560D5: innobase_init(void*) (ha_innodb.cc:2611)
==2731==    by 0x74BADB: ha_initialize_handlerton(st_plugin_int*) (handler.cc:470)
==2731==    by 0x5D9772: plugin_initialize(st_mem_root*, st_plugin_int*, int*, char**, bool) (sql_plugin.cc:1372)
==2731==    by 0x5DB53B: plugin_init(int*, char**, int) (sql_plugin.cc:1661)
==2731==    by 0x52629C: init_server_components() (mysqld.cc:4335)
==2731==    by 0x5274AB: mysqld_main(int, char**) (mysqld.cc:4934)
==2731==    by 0x6244585: (below main) (in /lib64/libc-2.9.so)
==2731== Use of uninitialised value of size 8
==2731==    at 0xBF53E1: my_wc_mb_latin1 (ctype-latin1.c:383)
==2731==    by 0x647B85: copy_and_convert(char*, unsigned int, charset_info_st const*, char const*, unsigned int, charset_info_st const*, unsigned int*) (sql_string.cc:847)
==2731==    by 0x52F14E: Protocol::net_store_data_cs(unsigned char const*, unsigned long, charset_info_st const*, charset_info_st const*) (protocol.cc:118)
==2731==    by 0x52F3CF: Protocol_text::store(Field*) (protocol.cc:1175)
==2731==    by 0x530248: Protocol::send_result_set_row(List<Item>*) (protocol.cc:903)
==2731==    by 0x58C238: select_send::send_data(List<Item>&) (sql_class.cc:2370)
==2731==    by 0x5FE8FD: end_send(JOIN*, st_join_table*, bool) (sql_select.cc:18019)
==2731==    by 0x5F599C: evaluate_join_record(JOIN*, st_join_table*, int) (sql_select.cc:17130)
==2731==    by 0x5F853C: sub_select(JOIN*, st_join_table*, bool) (sql_select.cc:16950)
==2731==    by 0x61C24C: do_select(JOIN*, List<Item>*, TABLE*, Procedure*) (sql_select.cc:16573)
==2731==    by 0x625447: JOIN::exec() (sql_select.cc:2871)
==2731==    by 0x6278A4: 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:3092)
==2731==    by 0x6284F3: handle_select(THD*, LEX*, select_result*, unsigned long) (sql_select.cc:319)
==2731==    by 0x5C393C: execute_sqlcom_select(THD*, TABLE_LIST*) (sql_parse.cc:4689)
==2731==    by 0x5CC711: mysql_execute_command(THD*) (sql_parse.cc:2234)
==2731==    by 0x5CF2C4: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_parse.cc:5909)
==2731== Conditional jump or move depends on uninitialised value(s)
==2731==    at 0x647B89: copy_and_convert(char*, unsigned int, charset_info_st const*, char const*, unsigned int, charset_info_st const*, unsigned int*) (sql_string.cc:847)
==2731==    by 0x52F14E: Protocol::net_store_data_cs(unsigned char const*, unsigned long, charset_info_st const*, charset_info_st const*) (protocol.cc:118)
==2731==    by 0x52F3CF: Protocol_text::store(Field*) (protocol.cc:1175)
==2731==    by 0x530248: Protocol::send_result_set_row(List<Item>*) (protocol.cc:903)
==2731==    by 0x58C238: select_send::send_data(List<Item>&) (sql_class.cc:2370)
==2731==    by 0x5FE8FD: end_send(JOIN*, st_join_table*, bool) (sql_select.cc:18019)
==2731==    by 0x5F599C: evaluate_join_record(JOIN*, st_join_table*, int) (sql_select.cc:17130)
==2731==    by 0x5F853C: sub_select(JOIN*, st_join_table*, bool) (sql_select.cc:16950)
==2731==    by 0x61C24C: do_select(JOIN*, List<Item>*, TABLE*, Procedure*) (sql_select.cc:16573)
==2731==    by 0x625447: JOIN::exec() (sql_select.cc:2871)
==2731==    by 0x6278A4: 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:3092)
==2731==    by 0x6284F3: handle_select(THD*, LEX*, select_result*, unsigned long) (sql_select.cc:319)
==2731==    by 0x5C393C: execute_sqlcom_select(THD*, TABLE_LIST*) (sql_parse.cc:4689)
==2731==    by 0x5CC711: mysql_execute_command(THD*) (sql_parse.cc:2234)
==2731==    by 0x5CF2C4: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_parse.cc:5909)
==2731==    by 0x5D1A29: dispatch_command(enum_server_command, THD*, char*, unsigned int) (sql_parse.cc:1079)
==2731== Conditional jump or move depends on uninitialised value(s)
==2731==    at 0x647B60: copy_and_convert(char*, unsigned int, charset_info_st const*, char const*, unsigned int, charset_info_st const*, unsigned int*) (sql_string.cc:849)
==2731==    by 0x52F14E: Protocol::net_store_data_cs(unsigned char const*, unsigned long, charset_info_st const*, charset_info_st const*) (protocol.cc:118)
==2731==    by 0x52F3CF: Protocol_text::store(Field*) (protocol.cc:1175)
==2731==    by 0x530248: Protocol::send_result_set_row(List<Item>*) (protocol.cc:903)
==2731==    by 0x58C238: select_send::send_data(List<Item>&) (sql_class.cc:2370)
==2731==    by 0x5FE8FD: end_send(JOIN*, st_join_table*, bool) (sql_select.cc:18019)
==2731==    by 0x5F599C: evaluate_join_record(JOIN*, st_join_table*, int) (sql_select.cc:17130)
==2731==    by 0x5F853C: sub_select(JOIN*, st_join_table*, bool) (sql_select.cc:16950)
==2731==    by 0x61C24C: do_select(JOIN*, List<Item>*, TABLE*, Procedure*) (sql_select.cc:16573)
==2731==    by 0x625447: JOIN::exec() (sql_select.cc:2871)
==2731==    by 0x6278A4: 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:3092)
==2731==    by 0x6284F3: handle_select(THD*, LEX*, select_result*, unsigned long) (sql_select.cc:319)
==2731==    by 0x5C393C: execute_sqlcom_select(THD*, TABLE_LIST*) (sql_parse.cc:4689)
==2731==    by 0x5CC711: mysql_execute_command(THD*) (sql_parse.cc:2234)
==2731==    by 0x5CF2C4: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_parse.cc:5909)
==2731==    by 0x5D1A29: dispatch_command(enum_server_command, THD*, char*, unsigned int) (sql_parse.cc:1079)
==2731== Conditional jump or move depends on uninitialised value(s)
==2731==    at 0x647B68: copy_and_convert(char*, unsigned int, charset_info_st const*, char const*, unsigned int, charset_info_st const*, unsigned int*) (sql_string.cc:849)
==2731==    by 0x52F14E: Protocol::net_store_data_cs(unsigned char const*, unsigned long, charset_info_st const*, charset_info_st const*) (protocol.cc:118)
==2731==    by 0x52F3CF: Protocol_text::store(Field*) (protocol.cc:1175)
==2731==    by 0x530248: Protocol::send_result_set_row(List<Item>*) (protocol.cc:903)
==2731==    by 0x58C238: select_send::send_data(List<Item>&) (sql_class.cc:2370)
==2731==    by 0x5FE8FD: end_send(JOIN*, st_join_table*, bool) (sql_select.cc:18019)
==2731==    by 0x5F599C: evaluate_join_record(JOIN*, st_join_table*, int) (sql_select.cc:17130)
==2731==    by 0x5F853C: sub_select(JOIN*, st_join_table*, bool) (sql_select.cc:16950)
==2731==    by 0x61C24C: do_select(JOIN*, List<Item>*, TABLE*, Procedure*) (sql_select.cc:16573)
==2731==    by 0x625447: JOIN::exec() (sql_select.cc:2871)
==2731==    by 0x6278A4: 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:3092)
==2731==    by 0x6284F3: handle_select(THD*, LEX*, select_result*, unsigned long) (sql_select.cc:319)
==2731==    by 0x5C393C: execute_sqlcom_select(THD*, TABLE_LIST*) (sql_parse.cc:4689)
==2731==    by 0x5CC711: mysql_execute_command(THD*) (sql_parse.cc:2234)
==2731==    by 0x5CF2C4: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_parse.cc:5909)
==2731==    by 0x5D1A29: dispatch_command(enum_server_command, THD*, char*, unsigned int) (sql_parse.cc:1079)
^ Found warnings in /var/lib/buildbot/maria-slave/work-opensuse-amd64/build/mysql-test/var/1/log/mysqld.1.err

It's the only test that currently fails in the valgrind builder on 5.5, so it would be really nice to have it fixed.



 Comments   
Comment by Jan Lindström (Inactive) [ 2015-04-21 ]

Log writes are done using static block sizes, clearly sometimes the end of the block is not initialized. However, this code is not familiar to me and my fix tries did not resolve the issue.

Comment by Jan Lindström (Inactive) [ 2015-04-21 ]

Serg: Any suggestions how to find where exactly the unused bytes from block(s) remain uninitialized ?

Comment by Sergei Golubchik [ 2015-04-21 ]

I don't know this code either. In cases like that (when there's a lot of unfamiliar code) I'm trying to reduce the amount of code to look at. With git bisect you can find what exactly commit has introduced the bug. Hopefully it'll be small enough to understand what went wrong.

Generated at Thu Feb 08 07:24:02 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.