Bug #29806 binlog_innodb.test creates a server log
Submitted: 15 Jul 2007 10:18 Modified: 2 Aug 2007 15:24
Reporter: Ingo Strüwing Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Locking Severity:S1 (Critical)
Version:5.1.21 OS:Any
Assigned to: Sergey Vojtovich CPU Architecture:Any

[15 Jul 2007 10:18] Ingo Strüwing
Description:
From master.err:

070715 13:01:19  InnoDB: Error: MySQL is freeing a thd
InnoDB: though trx->n_mysql_tables_in_use is 4294967294
InnoDB: and trx->mysql_n_tables_locked is 2011.
TRANSACTION 0 801, not started, process no 31783, OS thread id 3010534288
mysql tables in use 4294967294, locked 2011
MySQL thread id 1, query id 2081 localhost root
 len 892; hex 065c6e05a2ae810800000000010000006ff0994601000000010000000100000000000000210300000100000014000000000000004d7953514c586964010000001c08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000022030000000000000000000000000000d60c050000000000000000000c00000000000000c09b0009f49b0009000000009d6f020000000000a2ae81080000000000000000000000000000000000000000901b71b3277c00000000000000000000feffffffdb0700000000000000000000102700000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000e883beb701000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028acbeb700000000000000000000000028f8beb7000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000030000000000000000000000cc1381082b00000000000000000000000000000000000000c062bfb798ae81089100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000; asc  \n             o  F                !               MySQLXid                                                                                                                                "                                                o                                q '|                           '                                                                                                                                                              (               (                                                                               +                    b                                                                                                                                                                                                                                                                                                                          ;

I guess that this existed for some time already, but nowadays it makes pushbuild cells red. Hence S1/P1.

NOTE: I am going to disable binlog_innodb. Please re-enable after this is fixed.

How to repeat:
bk clone bk-internal.mysql.com:/home/bk/mysql-5.1 'mysql-5.1-amain'
cd 'mysql-5.1-amain'
BUILD/compile-pentium-debug-max --with-debug=full
cd mysql-test
./mysql-test-run.pl --mysqld=--binlog-format=statement binlog_innodb
cat var/log/master.err
[17 Jul 2007 7:30] Ingo Strüwing
The same is somtimes reported for 'binlog_killed'.

NOTE I am going to disable this test too. Please re-enable after fixing this.

BTW, my initial disabling failed as I entered the test in the wrong disabled.def file.
[23 Jul 2007 19:41] 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/31420

ChangeSet@1.2559, 2007-07-24 04:32:40+05:00, svoj@mysql.com +5 -0
  BUG#29806 - binlog_innodb.test creates a server log
  
  Stopping mysql server could result in an entry in mysql error
  file: "InnoDB: Error: MySQL is freeing a thd".
  
  This happened because InnoDB assumes that the server will never
  call external_lock(F_UNLCK) in case external_lock(READ/WRITE)
  failed.
  
  Prior to this patch we haven't had strict definition whether
  external_lock(F_UNLCK) must be called in case external_lock(READ/WRITE)
  fails.
  
  This patch states that we never call external_lock(F_UNLCK) in case
  external_lock(READ/WRITE) fails.
[23 Jul 2007 22:06] 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/31438

ChangeSet@1.2559, 2007-07-23 20:58:24+05:00, svoj@mysql.com +5 -0
  BUG#29806 - binlog_innodb.test creates a server log
  
  Stopping mysql server could result in an entry in mysql error
  file: "InnoDB: Error: MySQL is freeing a thd".
  
  This happened because InnoDB assumes that the server will never
  call external_lock(F_UNLCK) in case external_lock(READ/WRITE)
  failed.
  
  Prior to this patch we haven't had strict definition whether
  external_lock(F_UNLCK) must be called in case external_lock(READ/WRITE)
  fails.
  
  This patch states that we never call external_lock(F_UNLCK) in case
  external_lock(READ/WRITE) fails.
[25 Jul 2007 11:05] 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/31537

ChangeSet@1.2559, 2007-07-25 19:56:17+05:00, svoj@mysql.com +5 -0
  BUG#29806 - binlog_innodb.test creates a server log
  
  Stopping mysql server could result in an entry in mysql error
  file: "InnoDB: Error: MySQL is freeing a thd".
  
  This happened because InnoDB assumes that the server will never
  call external_lock(F_UNLCK) in case external_lock(READ/WRITE)
  failed.
  
  Prior to this patch we haven't had strict definition whether
  external_lock(F_UNLCK) must be called in case external_lock(READ/WRITE)
  fails.
  
  This patch states that we never call external_lock(F_UNLCK) in case
  external_lock(READ/WRITE) fails.
[27 Jul 2007 16:49] Bugs System
Pushed into 5.1.21-beta
[2 Aug 2007 15:24] Paul Dubois
No changelog entry needed.