Bug #24533 uninited null_bit of m_after_image
Submitted: 23 Nov 2006 7:09 Modified: 27 Nov 2006 18:46
Reporter: Andrei Elkin Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Row Based Replication ( RBR ) Severity:S2 (Serious)
Version:5.1.14 OS:
Assigned to: Mats Kindahl CPU Architecture:Any

[23 Nov 2006 7:09] Andrei Elkin
Description:
Showed up as

VALGRIND: 'Syscall param pwrite64(buf) points to uninitialised byte(s)'
    COUNT: 2
    FUNCTION: (within    FILES:    slave.err
    TESTS:    rpl_row_tabledefs_2myisam rpl_row_tabledefs_3innodb
    STACK: at 0x4D4090C: (within /lib64/tls/libpthread-0.60.so)
             by 0x938F33: my_pwrite (my_pread.c:150)
             by 0x88FB8B: _mi_update_static_record (mi_statrec.c:92)
             by 0x896C6E: mi_update (mi_update.c:158)
             by 0x6D34E8: handler::ha_update_row(char const*, char*)
(handler.cc:3669)
             by 0x6995B4: Rows_log_event::exec_event(st_relay_log_info*)
(log_event.cc:5780)
             by 0x74832D: exec_relay_log_event(THD*, st_relay_log_info*)
(slave.cc:1802)
             by 0x745EDA: handle_slave_sql (slave.cc:2363)

The stack says that uninited bytes of new record instance are passed to the storage.

How to repeat:
mysql-test-run rpl_row_tabledefs_2myisam

note, that this stack with rpl_row_tabledefs_3innodb is a bug in the test (no opt file, see bug#24490).

Suggested fix:
either unpack into record[0] all the time (such patch The patch got committed to bug#24486), or consider to fill the extra fields in the record later after unpack.
[23 Nov 2006 9:15] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/15749

ChangeSet@1.2371, 2006-11-23 10:15:02+01:00, mats@romeo.(none) +1 -0
  BUG#24533 (uninitialized null but of m_after_image):
  Patch to fix valgrind warning that uninitialized bytes were written. 
  The warning was caused by set_default(), which assumes that the field pointer is pointing
  into record[0], while all other functions honors the move_field_offset().
[23 Nov 2006 9:44] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/15750

ChangeSet@1.2372, 2006-11-23 10:43:43+01:00, mats@romeo.(none) +1 -0
  BUG#24533 (uninitialized null bits in m_after_image):
  Removing valgrind memory checks from code.
[27 Nov 2006 18:46] Paul DuBois
Noted in 5.1.14 changelog.

Some unnecessary Valgrind warnings were removed from the server.