Bug #51635 rpl.rpl_heartbeat_basic fails in mysql-pe
Submitted: 2 Mar 2010 10:37 Modified: 8 May 2010 16:41
Reporter: Georgi Kodinov Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Replication Severity:S3 (Non-critical)
Version:mysql-pe, mysql-pe-stage OS:Any
Assigned to: Luis Soares CPU Architecture:Any

[2 Mar 2010 10:37] Georgi Kodinov
Description:
rpl.rpl_heartbeat_basic fails in mysql-pe with the following error:
rpl.rpl_heartbeat_basic 'row'            [ fail ]  Found warnings/errors in server log file!
        Test ended at 2010-03-02 01:31:21
line
Error: Freeing wrong aligned pointer at line 1546, '/export/home3/pb2/build/sb_2-None-1267472473.87/mysql-pe-stage-gcov/sql/mysqld.cc'
^ Found warnings in /export/home3/pb2/build/sb_2-None-1267472473.87/mysql-pe-stage-gcov/mysql-test/var/log/mysqld.2.err
ok

 - saving '/export/home3/pb2/build/sb_2-None-1267472473.87/mysql-pe-stage-gcov/mysql-test/var/log/rpl.rpl_heartbeat_basic-row/' to '/export/home3/pb2/build/sb_2-None-1267472473.87/mysql-pe-stage-gcov/mysql-test/var/log/rpl.rpl_heartbeat_basic-row/'

Retrying test, attempt(2/3)...

rpl.rpl_heartbeat_basic 'row'            [ retry-fail ]  Found warnings/errors in server log file!
        Test ended at 2010-03-02 01:34:20
line
Error: Freeing wrong aligned pointer at line 1546, '/export/home3/pb2/build/sb_2-None-1267472473.87/mysql-pe-stage-gcov/sql/mysqld.cc'
^ Found warnings in /export/home3/pb2/build/sb_2-None-1267472473.87/mysql-pe-stage-gcov/mysql-test/var/log/mysqld.2.err
ok

 - saving '/export/home3/pb2/build/sb_2-None-1267472473.87/mysql-pe-stage-gcov/mysql-test/var/log/rpl.rpl_heartbeat_basic-row/' to '/export/home3/pb2/build/sb_2-None-1267472473.87/mysql-pe-stage-gcov/mysql-test/var/log/rpl.rpl_heartbeat_basic-row/'

Test has failed 2 times, no more retries!

How to repeat:
run the test
[2 Mar 2010 12:12] Georgi Kodinov
Disabled the test as it's failing constantly : http://lists.mysql.com/commits/102029. Please re-enable when fixed.
[26 Apr 2010 22:04] Luis Soares
How to repeat:

1. clone mysql-pe or mysql-6.0-codebase-bugfixing 
   (I used mysql-pe, revid: ramil@mysql.com-20100425123929-608d93z6dlqbtb0l)
2. cd mysql-pe
3. ./BUILD/compile-pentium64-debug-max
4. cd mysql-test
5. vi suite/rpl/t/rpl_bug51635.test

source include/master-slave.inc;

# excerpt from rpl_heartbeat_basic.test

--echo *** Reload slave *** 
--connection slave
-- source include/stop_slave.inc
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
wait
EOF
--echo Reload slave
--shutdown_server 10
--source include/wait_until_disconnected.inc
--append_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
restart
EOF
--enable_reconnect
--source include/wait_until_connected_again.inc
--echo

-- exit

6. perl mtr rpl_bug51635
[26 Apr 2010 22:17] 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/106575

4043 Luis Soares	2010-04-26
      BUG#51635: rpl.rpl_heartbeat_basic fails in mysql-pe
      
      There was a double free for the slave_load_tmpdir variable. In
      some cases the variable was taken from the argument to mysqld
      option and in these cases, there was an attempt to free it twice.
      
      We fix this by removing the extra my_free. In addition, we also
      remove the memory allocation that was done whenever the
      slave_load_tmpdir was not taken from mysqld option
      argument. Instead of duplicating it we set slave_load_tmpdir to
      point to mysql_tmpdir directly, thence there is no need to
      allocate and no need to free explicitly memory for
      slave_load_tmpdir.
      
      At this time, trunk and next-mr don't share this problem, because
      the same change proposed in this patch was introduced as part of
      wl4738, in see revision:
        serg@mysql.com-20091222093556-8aocy9n92pdp0rwr
      
      Somehow this change did not reach 6.0 codebase.
[4 May 2010 12:07] Guilhem Bichot
BUG#53391 has been marked as duplicate of this one.
[6 May 2010 15:37] 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/107677

3870 Luis Soares	2010-05-06
      BUG#51635: rpl.rpl_heartbeat_basic fails in mysql-pe
      
      There was a double free for the slave_load_tmpdir variable. In
      some cases the variable was taken from the argument to mysqld
      option and in these cases, there was an attempt to free it twice.
      
      We fix this by removing the extra my_free. In addition, we also
      remove the memory allocation that was done whenever the
      slave_load_tmpdir was not taken from mysqld option argument. 
      Instead of duplicating it, we set slave_load_tmpdir to
      point to mysql_tmpdir directly, thence there is no need to
      allocate and no need to explicitly free memory for
      slave_load_tmpdir.
            
      At this time, trunk and next-mr don't share this problem, because
      a very similar change as the one proposed in this patch was 
      introduced as part of wl4738. See revision (in mysql-trunk):
        serg@mysql.com-20091222093556-8aocy9n92pdp0rwr
            
      Somehow this change did not reach 6.0 codebase.
[6 May 2010 15:43] Luis Soares
Pushed to mysql-6.0-codebase-bugfixing:
http://pb2.norway.sun.com/web.py?template=push_details&push=1227676
[7 May 2010 9:20] Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20100507091908-vqyhpwf2km0aokno) (version source revid:alik@sun.com-20100507091737-12vceffs11elb25g) (merge vers: 6.0.14-alpha) (pib:16)
[8 May 2010 16:41] Paul DuBois
Noted in 6.0.14 changelog.

The server attempted to deallocate already freed memory for the
slave_load_tmpdir system variable.