Bug #42343 | Falcon crash in Cache::flush on/after recovery | ||
---|---|---|---|
Submitted: | 26 Jan 2009 9:56 | Modified: | 27 Mar 2009 16:18 |
Reporter: | Philip Stoev | Email Updates: | |
Status: | Can't repeat | Impact on me: | |
Category: | MySQL Server: Falcon storage engine | Severity: | S1 (Critical) |
Version: | 6.0-falcon-team | OS: | Any |
Assigned to: | Vladislav Vaintroub | CPU Architecture: | Any |
Tags: | F_RECOVERY |
[26 Jan 2009 9:56]
Philip Stoev
[26 Jan 2009 10:01]
Philip Stoev
Output in the error log: # 21:35:54 /nFirst recovery block is 1 # 21:35:54 Last recovery block is 373 # 21:35:54 Recovery read block is 42 # 21:35:54 Recovery phase 1... # 21:35:54 Processed: 23647 # 21:35:54 # 21:35:54 Recovery phase 2... # 21:35:54 Processed: 23647 # 21:35:54 # 21:35:54 Recovery phase 3... # 21:35:55 Processed: 23647 # 21:35:55 Recovery complete # 21:35:55 1: Commit System Transaction 2 # 21:35:55 1: Commit System Transaction 4 # 21:35:55 1: Commit System Transaction 6 # 21:35:55 Exception: duplicate values for key INDEXES..PRIMARY_KEY in table SYSTEM.INDEXES # 21:35:55 Verb rollback: duplicate values for key INDEXES..PRIMARY_KEY in table SYSTEM.INDEXES # 21:35:55 Scheduler::initialize: duplicate values for key INDEXES..PRIMARY_KEY in table SYSTEM.INDEXES # 21:35:55 1: Rollback transaction 8 # 21:35:55 1: Cache flush: 861 pages, 23 writes in 0 seconds (861 pps) # 21:36:07 090125 21:36:07 - mysqld got signal 11 ;
[27 Mar 2009 15:38]
Philip Stoev
When trying to recover the original tablespace with a server from 6.0-falcon-team, the following problem occurs: bumpPageIncarnation; page 0 [Falcon] Error: assertion (bdb) failed at line 829 in file IndexRootPage.cpp 090327 17:32:31 - mysqld got signal 6 ; This could be because you hit a bug. It is also possible that this binary or one of the libraries it was linked against is corrupt, improperly built, or misconfigured. This error can also be caused by malfunctioning hardware. We will try our best to scrape up some info that will hopefully help diagnose the problem, but since we have already crashed, something is definitely wrong and this may fail. key_buffer_size=8384512 read_buffer_size=131072 max_used_connections=0 max_threads=151 thread_count=0 connection_count=0 It is possible that mysqld could use up to key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 338401 K bytes of memory Hope that's ok; if not, decrease some variables in the equation. thd: 0x0 Attempting backtrace. You can use the following information to find out where mysqld died. If you see no messages after this, something went terribly wrong... stack_bottom = (nil) thread_stack 0x40000 ./mysqld(my_print_stacktrace+0x32) [0xc5f1e1] ./mysqld(handle_segfault+0x2a6) [0x6c724a] /lib64/libpthread.so.0 [0x315b00f0f0] /lib64/libpthread.so.0(raise+0x2b) [0x315b00efab] ./mysqld(Error::debugBreak()+0xe) [0x9efc84] ./mysqld(Error::error(char const*, ...)+0x131) [0x9efdb7] ./mysqld(Error::assertionFailed(char const*, char const*, int)+0x2d) [0x9efe5b] ./mysqld(IndexRootPage::indexMerge(Dbb*, int, SRLUpdateIndex*, unsigned int)+0x189) [0xa04593] ./mysqld(SRLUpdateIndex::execute()+0xd6) [0xa7713c] ./mysqld(SRLUpdateIndex::redo()+0x15) [0xa7716d] ./mysqld(SerialLog::recover()+0xd06) [0xa58160] ./mysqld(Database::openDatabase(char const*)+0x405) [0x9de5f3] ./mysqld(Connection::getDatabase(char const*, char const*, Threads*)+0x16a) [0x9ccea0] ./mysqld(Connection::openDatabase(char const*, char const*, char const*, char const*, char const*, Threads*)+0x1c8) [0x9ce1e0] ./mysqld(StorageDatabase::getOpenConnection()+0x89) [0x983e61] ./mysqld(StorageHandler::initialize()+0xa3) [0x986ef3] ./mysqld(StorageInterface::falcon_init(void*)+0x2ac) [0x97d390] ./mysqld(ha_initialize_handlerton(st_plugin_int*)+0xae) [0x82087a] ./mysqld [0x8d7df8] ./mysqld(plugin_init(int*, char**, int)+0x673) [0x8db5f1] ./mysqld [0x6caa65] ./mysqld(main+0x1f0) [0x6cb563] /lib64/libc.so.6(__libc_start_main+0xe6) [0x315a41e546] ./mysqld [0x5d2c39] The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains information that should help you find out what is causing the crash. [Falcon] Error: assertion (lockState == 0) failed at line 132 in file SyncObject.cpp Very likely this tablespace is no longer compatible with the latest server.
[27 Mar 2009 16:18]
Ann Harrison
Unfortunately, the files provided demonstrate something quite different from the error reported in the bug, and something that suggests that the files themselves are corrupt. Specifically, the falcon_master.fts header page (page 0) contains several bad fields, including the wrong section id for the tablespaces table and the wrong size for the serial log segments. It's possible that Falcon corrupted that tablespace, but it seems more likely that it was damaged in transit. If we had a bug that broke header pages, we'd see it more often, I think.