Bug #56567 | mysql-test-run --valgrind innodb_plugin.innodb_bug52745 gives warnings | ||
---|---|---|---|
Submitted: | 5 Sep 2010 10:45 | Modified: | 10 Feb 2011 14:51 |
Reporter: | Michael Widenius | Email Updates: | |
Status: | Duplicate | Impact on me: | |
Category: | MySQL Server: InnoDB Plugin storage engine | Severity: | S2 (Serious) |
Version: | 5.1.50, 5.1.51-bzr, 5.5 | OS: | Linux |
Assigned to: | Assigned Account | CPU Architecture: | Any |
Tags: | Contribution, valgrind |
[5 Sep 2010 10:45]
Michael Widenius
[5 Sep 2010 17:05]
Valeriy Kravchuk
Verified with current 5.1.51 from bzr on Mac OS X. I've got different valgrind warning/errors. But still: ==24504== LEAK SUMMARY: ==24504== definitely lost: 0 bytes in 0 blocks ==24504== indirectly lost: 0 bytes in 0 blocks ==24504== possibly lost: 20,752,004 bytes in 29,105 blocks ==24504== still reachable: 8,593,715 bytes in 50,821 blocks ==24504== suppressed: 340 bytes in 8 blocks ==24504== ==24504== For counts of detected and suppressed errors, rerun with: -v ==24504== Use --track-origins=yes to see where uninitialised values come from ==24504== ERROR SUMMARY: 7474 errors from 428 contexts (suppressed: 0 from 0) mysqltest failed but provided no output
[6 Sep 2010 8:34]
Valeriy Kravchuk
Different warnings with current mysql5.1 from bzr on Ubuntu: innodb_plugin.innodb_bug52745 [ fail ] Found warnings/errors in server log file! Test ended at 2010-09-06 11:31:44 line ==21834== Conditional jump or move depends on uninitialised value(s) ==21834== at 0x4F2307F: rw_lock_set_writer_id_and_recursion_flag (sync0rw.ic:283) ==21834== by 0x4F23945: rw_lock_x_lock_low (sync0rw.c:555) ==21834== by 0x4F23A0D: rw_lock_x_lock_func (sync0rw.c:614) ==21834== by 0x4EDC8DC: mtr_x_lock_func (mtr0mtr.ic:271) ==21834== by 0x4EA7537: fsp_header_init (fsp0fsp.c:970) ==21834== by 0x4F217D4: innobase_start_or_create_for_mysql (srv0start.c:1491) ==21834== by 0x4EB7BEF: innobase_init(void*) (ha_innodb.cc:2250) ==21834== by 0x841C427: ha_initialize_handlerton(st_plugin_int*) (handler.cc:435) ==21834== by 0x84EA2E9: plugin_initialize(st_plugin_int*) (sql_plugin.cc:1019) ==21834== by 0x84EE801: plugin_init(int*, char**, int) (sql_plugin.cc:1246) ==21834== by 0x82D0294: init_server_components() (mysqld.cc:3998) ==21834== by 0x82D0D44: main (mysqld.cc:4469) ==21834== Conditional jump or move depends on uninitialised value(s) ==21834== at 0x4F2307F: rw_lock_set_writer_id_and_recursion_flag (sync0rw.ic:283) ==21834== by 0x4F23945: rw_lock_x_lock_low (sync0rw.c:555) ==21834== by 0x4F23A0D: rw_lock_x_lock_func (sync0rw.c:614) ==21834== by 0x4ED2B9E: log_group_checkpoint (log0log.c:1827) ==21834== by 0x4ED2CC8: log_groups_write_checkpoint_info (log0log.c:1937) ==21834== by 0x4ED2E5F: log_checkpoint (log0log.c:2025) ==21834== by 0x4ED0869: log_fsp_current_free_limit_set_and_checkpoint (log0log.c:177) ==21834== by 0x4EA81F2: fsp_fill_free_list (fsp0fsp.c:1402) ==21834== by 0x4EA77A8: fsp_header_init (fsp0fsp.c:1004) ==21834== by 0x4F217D4: innobase_start_or_create_for_mysql (srv0start.c:1491) ==21834== by 0x4EB7BEF: innobase_init(void*) (ha_innodb.cc:2250) ==21834== by 0x841C427: ha_initialize_handlerton(st_plugin_int*) (handler.cc:435) ==21834== by 0x84EA2E9: plugin_initialize(st_plugin_int*) (sql_plugin.cc:1019) ==21834== by 0x84EE801: plugin_init(int*, char**, int) (sql_plugin.cc:1246) ==21834== by 0x82D0294: init_server_components() (mysqld.cc:3998) ==21834== by 0x82D0D44: main (mysqld.cc:4469) ==21834== Conditional jump or move depends on uninitialised value(s) ==21834== at 0x4F2307F: rw_lock_set_writer_id_and_recursion_flag (sync0rw.ic:283) ==21834== by 0x4F23945: rw_lock_x_lock_low (sync0rw.c:555) ==21834== by 0x4F23A0D: rw_lock_x_lock_func (sync0rw.c:614) ==21834== by 0x4E7C7BF: btr_search_check_free_space_in_heap (btr0sea.c:145) ==21834== by 0x4E7EC72: btr_search_update_hash_on_insert (btr0sea.c:1609) ==21834== by 0x4E755A4: btr_cur_optimistic_insert (btr0cur.c:1242) ==21834== by 0x4F028DE: row_ins_index_entry_low (row0ins.c:2099) ==21834== by 0x4F02BBA: row_ins_index_entry (row0ins.c:2179) ==21834== by 0x4F02DC0: row_ins_index_entry_step (row0ins.c:2264) ==21834== by 0x4F02F7F: row_ins (row0ins.c:2396) ==21834== by 0x4F0311A: row_ins_step (row0ins.c:2506) ==21834== by 0x4EF9767: que_thr_step (que0que.c:1225) ==21834== by 0x4EF99D8: que_run_threads_low (que0que.c:1311) ==21834== by 0x4EF9AE9: que_run_threads (que0que.c:1348) ==21834== by 0x4EF9CD5: que_eval_sql (que0que.c:1431) ==21834== by 0x4E914DA: dict_create_or_check_foreign_constraint_tables (dict0crea.c:1256) ==21834== Thread 15: ==21834== Conditional jump or move depends on uninitialised value(s) ==21834== at 0x4F2307F: rw_lock_set_writer_id_and_recursion_flag (sync0rw.ic:283) ==21834== by 0x4F23945: rw_lock_x_lock_low (sync0rw.c:555) ==21834== by 0x4F23A0D: rw_lock_x_lock_func (sync0rw.c:614) ==21834== by 0x4F28337: trx_purge (trx0purge.c:1107) ==21834== by 0x4F1F4CF: srv_master_thread (srv0srv.c:2685) ==21834== by 0x404196D: start_thread (pthread_create.c:300) ==21834== by 0x4196A4D: clone (clone.S:130) ==21834== Thread 17: ==21834== Conditional jump or move depends on uninitialised value(s) ==21834== at 0x8791462: longest_match (deflate.c:1143) ==21834== by 0x87923D5: deflate_slow (deflate.c:1595) ==21834== by 0x8790906: deflate (deflate.c:790) ==21834== by 0x4E79BC8: btr_store_big_rec_extern_fields (btr0cur.c:3972) ==21834== by 0x4F02AAE: row_ins_index_entry_low (row0ins.c:2131) ==21834== by 0x4F02BBA: row_ins_index_entry (row0ins.c:2179) ==21834== by 0x4F02DC0: row_ins_index_entry_step (row0ins.c:2264) ==21834== by 0x4F02F7F: row_ins (row0ins.c:2396) ==21834== by 0x4F0311A: row_ins_step (row0ins.c:2506) ==21834== by 0x4F0863C: row_insert_for_mysql (row0mysql.c:1140) ==21834== by 0x4EBFCB6: ha_innodb::write_row(unsigned char*) (ha_innodb.cc:4741) ==21834== by 0x8417ABD: handler::ha_write_row(unsigned char*) (handler.cc:4654) ==21834== by 0x837A47D: write_record(THD*, st_table*, st_copy_info*) (sql_insert.cc:1606) ==21834== by 0x837F11D: mysql_insert(THD*, TABLE_LIST*, List<Item>&, List<List<Item> >&, List<Item>&, List<Item>&, enum_duplicates, bool) (sql_insert.cc:835) ==21834== by 0x82E27A2: mysql_execute_command(THD*) (sql_parse.cc:3225) ==21834== by 0x82E937E: mysql_parse(THD*, char const*, unsigned int, char const**) (sql_parse.cc:6017) ^ Found warnings in /home2/openxs/dbs/5.1/mysql-test/var/log/mysqld.1.err
[6 Sep 2010 10:53]
Marko Mäkelä
This looks like a duplicate of Bug #47873: bogus Valgrind errors reported for InnoDB rw-locks implemented with atomic memory access. Did you forget to enable UNIV_DEBUG_VALGRIND or enable Valgrind support at build time?
[6 Oct 2010 23:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
[27 Dec 2010 22:52]
Mark Callaghan
We get this in 5.5.8 and the 5.1.52 plugin when using the plugin for all innodb tests. This diff fixes it --- /s/src/mysql-5.5.8/storage/innobase/buf/buf0buddy.c 2010-12-03 09:58:26.000000000 -0800 +++ storage/innobase/buf/buf0buddy.c 2010-12-27 14:48:51.000000000 -0800 @@ -438,6 +438,12 @@ /* This is a compressed page. */ mutex_t* mutex; + /* Suppress Valgrind warnings about conditional jump + on uninitialized value. */ + UNIV_MEM_VALID((const byte*) src + + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID, 4); + UNIV_MEM_VALID((const byte*) src + FIL_PAGE_OFFSET, 4); + /* The src block may be split into smaller blocks, some of which may be free. Thus, the mach_read_from_4() calls below may attempt to read @@ -450,10 +456,6 @@ (const byte*) src + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID); ulint page_no = mach_read_from_4( (const byte*) src + FIL_PAGE_OFFSET); - /* Suppress Valgrind warnings about conditional jump - on uninitialized value. */ - UNIV_MEM_VALID(&space, sizeof space); - UNIV_MEM_VALID(&page_no, sizeof page_no); bpage = buf_page_hash_get(buf_pool, space, page_no); if (!bpage || bpage->zip.data != src) {
[6 Jan 2011 0:46]
Mark Callaghan
I get the error with -DUNIV_DEBUG_VALGRIND set
[6 Jan 2011 0:51]
Mark Callaghan
AFAIK, this problem occurs with gcc 4.4 but not with gcc 4.1
[6 Jan 2011 4:47]
MySQL Verification Team
Verified on Centos 5.4 x86_64 using mysql-5.1.52.tar.gz and gcc 4.1: ./configure --enable-thread-safe-client --with-ssl \ --with-plugins=partition,csv,blackhole,myisam,heap,innodb_plugin,innobase \ --with-fast-mutexes --with-extra-charsets=all --with-debug \ C_EXTRA_FLAGS="-fno-omit-frame-pointer -fno-strict-aliasing -DHAVE_purify -DNO_ALARM -DSIGNAL_WITH_VIO_CLOSE -DUNIV_DEBUG_VALGRIND -Wall" \ CFLAGS="-O0 -g" CXXFLAGS="-O0 -g" make cd mysql-test ./mysql-test-run --valgrind innodb_plugin.innodb_bug52745
[6 Jan 2011 23:41]
MySQL Verification Team
Verified on Centos 5.4 x86_64 using mysql-5.1.54.tar.gz and gcc 4.1: ./configure --enable-thread-safe-client --with-ssl \ --with-plugins=partition,csv,blackhole,myisam,heap,innodb_plugin,innobase \ --with-fast-mutexes --with-extra-charsets=all --with-debug \ --enable-mysql-maintainer-mode=no \ C_EXTRA_FLAGS="-fno-omit-frame-pointer -fno-strict-aliasing -DHAVE_purify -DNO_ALARM -DSIGNAL_WITH_VIO_CLOSE -DUNIV_DEBUG_VALGRIND -Wall" \ CFLAGS="-O0 -g" CXXFLAGS="-O0 -g" make cd mysql-test ./mysql-test-run --valgrind innodb_plugin.innodb_bug52745 (note workaround for bug 57989)
[5 Feb 2011 5:05]
Vasil Dimov
Probably a duplicate of Bug#59875 Valgrind warning in buf0buddy.c
[10 Feb 2011 14:51]
Vasil Dimov
Duplicate of Bug#59875 Valgrind warning in buf0buddy.c
[15 Feb 2011 8:59]
Marko Mäkelä
We are comparing x==x with uninitialized x, and this triggers a Valgrind warning when InnoDB has been built without Valgrind instrumentation. I have submitted a fix for this in Bug #59307.
[15 Feb 2011 9:00]
Marko Mäkelä
My previous comment was referring to [6 Sep 2010 10:34] Valeriy Kravchuk