Comment 7 for bug 1086269

Revision history for this message
Roel Van de Paar (roel11) wrote :

Refined the testcase down to about 10 seconds. Testcase result:

================== Error log:
130122 5:06:49 [Note] /ssd/qa/102/Percona-Server-5.5.28-rel29.1-359.Linux.x86_64/bin/mysqld: ready for connections.
Version: '5.5.28-rel29.1-log' socket: '/ssd/qa/102/vardir1_57/tmp/master.sock' port: 11139 Percona Server with XtraDB (GPL), Release rel29.1, Revision 359
InnoDB: Warning: hash index ref_count (1) is not zero after fil_discard_tablespace().
index: "c32" table: "test/table100_innodb_compressed"
InnoDB: Warning: hash index ref_count (1) is not zero after fil_discard_tablespace().
index: "PRIMARY" table: "test/table100_innodb_default_int"
InnoDB: Warning: hash index ref_count (1) is not zero after fil_discard_tablespace().
index: "c32" table: "test/table100_innodb_compressed"
130122 5:07:10 InnoDB: Assertion failure in thread 67819264 in file row0upd.c line 2023
InnoDB: Failing assertion: btr_pcur_restore_position(thr_get_trx(thr)->fake_changes ? BTR_SEARCH_TREE : BTR_MODIFY_TREE, pcur, mtr)
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
02:07:10 UTC - mysqld got signal 6 ;
==================

Note that both --innodb_file_per_table=1 and --innodb_lazy_drop_table=1 are required!

To execute the testcase:
1. Get PS (this was found on Percona-Server-5.5.28-rel29.1-359.Linux.x86_64)
2. Build with './build/build-binary.sh --debug ..', then untar
3. Set paths in start_mtr57 and test_mtr57 to the correct locations.
4. ./start_mtr57
5. time ./test_mtr57 # should complete in ~10 seconds. Crash data in vardir1_57

Sidenote; during testcase creation, I also saw the following happen at some point (note the 600 second timeout):

==================
InnoDB: Warning: hash index ref_count (1) is not zero after fil_discard_tablespace().
index: "PRIMARY" table: "test/table100_innodb_default_int"
InnoDB: Error: Waited for 5 secs for hash index ref_count (1) to drop to 0.
[...counts up to 600 seconds...]
InnoDB: Error: Waited for 600 secs for hash index ref_count (1) to drop to 0.
index: "PRIMARY" table: "test/table100_innodb_default_int"
130118 13:07:08 InnoDB: Assertion failure in thread 67819264 in file dict0dict.c line 1883
==================

Which in turn may relate to bug 1086227 / bug 897258 / bug 798371 (thanks AlexeyK)