Details
-
Bug
-
Status: Closed (View Workflow)
-
Minor
-
Resolution: Fixed
-
5.5(EOL), 10.0(EOL)
Description
http://buildbot.askmonty.org/buildbot/builders/bintar-rhel7-p8-debug/builds/12/steps/test/logs/stdio
innodb.innodb_corrupt_bit 'innodb_plugin' w1 [ fail ]
|
Test ended at 2014-11-19 05:33:19
|
|
CURRENT_TEST: innodb.innodb_corrupt_bit
|
mysqltest: At line 74: query 'INSERT INTO corrupt_bit_test_ā VALUES(13000,'x',1,1)' failed: 1062: Duplicate entry '1-x' for key 'idxē'
|
|
The result from queries just before the failure was:
|
< snip >
|
@@unique_checks
|
0
|
select @@innodb_change_buffering_debug;
|
@@innodb_change_buffering_debug
|
1
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+1,z+1 FROM corrupt_bit_test_ā;
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+10,z+10 FROM corrupt_bit_test_ā;
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+20,z+20 FROM corrupt_bit_test_ā;
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+50,z+50 FROM corrupt_bit_test_ā;
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+100,z+100 FROM corrupt_bit_test_ā;
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+200,z+200 FROM corrupt_bit_test_ā;
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+400,z+400 FROM corrupt_bit_test_ā;
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+800,z+800 FROM corrupt_bit_test_ā;
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+1600,z+1600 FROM corrupt_bit_test_ā;
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+4000,z+4000 FROM corrupt_bit_test_ā;
|
select count(*) from corrupt_bit_test_ā;
|
count(*)
|
1024
|
CREATE INDEX idx3 ON corrupt_bit_test_ā(b, c);
|
INSERT INTO corrupt_bit_test_ā VALUES(13000,'x',1,1);
|
|
More results from queries before failure can be found in /home/buildbot/maria-slave/power8-vlp03-bintar-debug/build/mysql-test/var/1/log/innodb_corrupt_bit.log
|
So far it happened twice, one time above on 10.0 / bintar-rhel7-p8-debug, and another one on 5.5 / bintar-trusty-p8-debug. Apparently there are no logs from the other one, but it can be seen in Cross Reference report:
[Build Details] 5.5 4339 bintar-trusty-p8-debug 2014-10-31 15:00:29 172 nm Normal run, no --ps-protocol innodb.innodb_corrupt_bit xtradb
|
innodb.innodb_corrupt_bit 'xtradb' w4 [ fail ]
|
Test ended at 2014-10-31 09:47:07
|
|
CURRENT_TEST: innodb.innodb_corrupt_bit
|
mysqltest: At line 72: query 'INSERT INTO corrupt_bit_test_ā VALUES(13000,'x',1,1)' failed: 1062: Duplicate entry '1-x' for key 'idxā'
|
|
The result from queries just before the failure was:
|
< snip >
|
@@unique_checks
|
0
|
select @@innodb_change_buffering_debug;
|
@@innodb_change_buffering_debug
|
1
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+1,z+1 FROM corrupt_bit_test_ā;
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+10,z+10 FROM corrupt_bit_test_ā;
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+20,z+20 FROM corrupt_bit_test_ā;
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+50,z+50 FROM corrupt_bit_test_ā;
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+100,z+100 FROM corrupt_bit_test_ā;
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+200,z+200 FROM corrupt_bit_test_ā;
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+400,z+400 FROM corrupt_bit_test_ā;
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+800,z+800 FROM corrupt_bit_test_ā;
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+1600,z+1600 FROM corrupt_bit_test_ā;
|
INSERT INTO corrupt_bit_test_ā SELECT 0,b,c+4000,z+4000 FROM corrupt_bit_test_ā;
|
select count(*) from corrupt_bit_test_ā;
|
count(*)
|
1024
|
CREATE INDEX idx3 ON corrupt_bit_test_ā(b, c);
|
INSERT INTO corrupt_bit_test_ā VALUES(13000,'x',1,1);
|
|
More results from queries before failure can be found in /var/lib/buildbot/maria-slave/power8-vlp04-debug/build/mysql-test/var/4/log/innodb_corrupt_bit.log
|
I find it highly suspicious that both times the failure happened on P8. It's a plain test, there should be no race conditions involved, so there must be some other reason (build problems? environmental?). In any case, it's worth investigating.
The problem is reproducible on x86 using 5.5/r4376. But it takes hours to fail:
while [ $? -eq 0 ]; do ./mtr --parallel=2 innodb.innodb_corrupt_bit --repeat=100 --mem; done
On PPC64 the problem is a bit easier to reproduce. 5.5/r4421 fails within an hour with the following simplified test:
--source include/have_innodb.inc
--source include/have_debug.inc
SET GLOBAL innodb_change_buffering_debug=1;
SET unique_checks=0;
CREATE TABLE t1(
a INT AUTO_INCREMENT PRIMARY KEY,
b CHAR(100),
c INT,
z INT,
UNIQUE(z, b))
ENGINE=InnoDB;
INSERT INTO t1 VALUES(0,'x',1, 1);
INSERT INTO t1 SELECT 0,b,c+1,z+1 FROM t1;
INSERT INTO t1 SELECT 0,b,c+10,z+10 FROM t1;
INSERT INTO t1 SELECT 0,b,c+20,z+20 FROM t1;
INSERT INTO t1 SELECT 0,b,c+50,z+50 FROM t1;
INSERT INTO t1 SELECT 0,b,c+100,z+100 FROM t1;
INSERT INTO t1 SELECT 0,b,c+200,z+200 FROM t1;
INSERT INTO t1 SELECT 0,b,c+400,z+400 FROM t1;
INSERT INTO t1 SELECT 0,b,c+800,z+800 FROM t1;
INSERT INTO t1 SELECT 0,b,c+1600,z+1600 FROM t1;
INSERT INTO t1 SELECT 0,b,c+4000,z+4000 FROM t1;
INSERT INTO t1 VALUES(13000,'x',1,1);
DROP TABLE t1;
SET GLOBAL innodb_change_buffering_debug=0;
The problem seem to be in guts of InnoDB btree implementation.