Bug #61972 | InnoDB assertion failure in page_is_comp(next_page) in btr0pcur.c line 423 | ||
---|---|---|---|
Submitted: | 25 Jul 2011 19:15 | Modified: | 27 Oct 2011 17:44 |
Reporter: | Jeff Bilyk | Email Updates: | |
Status: | Duplicate | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S2 (Serious) |
Version: | 5.5.11, 5.5.14, 5.5.15 | OS: | Linux (Alpine Linux 2.2.2) |
Assigned to: | CPU Architecture: | Any |
[25 Jul 2011 19:15]
Jeff Bilyk
[25 Jul 2011 22:27]
MySQL Verification Team
Check your hardware (hard drive) for failures.
[26 Jul 2011 0:16]
Jeff Bilyk
Short SMART tests on the HDDs (which we run regularly through Nagios) weren't showing anything, but one has some DMA failures on the extended tests, that seems to be the culprit here... If possible, could the ticket stay open (maybe at a lower prio) for a week or two? Since it's now happened twice in 2 weeks, that should be long enough to confirm that the hardware was the only issue.
[26 Jul 2011 14:33]
Valeriy Kravchuk
Also, just to check for all possible reasons, let me ask: did you move files when the database was running, or remove ib_logfiles when recovery was necessary?
[26 Jul 2011 16:18]
Jeff Bilyk
Valeriy, we did not move files while mysqld was running. When attempting recovery,we tried the following (but didn't touch ib_logfiles): - table repair (failed) - restart mysql with innodb_force_recovery set first to 4 then 6 and then attempt table repair (failed) - still with innodb_force_recovery on, tried mysqldump to dump tables, views, and stored procs (failed) - tried mysqldump without innodb_force_recovery on (failed) - stopped mysql, removed contents of /var/lib/mysql, re-ran mysql setup, then restored DB from a previous mysqldump, then replayed binlogs by dumping mysqlbinlog output to a file, then importing that content to the DB That last step seemed to do the trick to restore, but then this morning it looks like there is still some corruption since mysqld crashed again. Could it be that the InnoDB corruption got re-introduced after restoring the mysqldump backup file?
[29 Jul 2011 12:52]
Jeff Bilyk
This issue seems to have been resolved by the hard drive replacement. Thank you all for you quick help.
[6 Sep 2011 20:11]
Jeff Bilyk
Reopened this bug since the same issue has re-occured after swapping out all hardware on the box (including both hard drives). Both hard drive pass a SMART test. Error from the last crash is as output below. Please let me know if more information is needed. 110904 17:46:50 InnoDB: Error: space id and page n:o stored in the page InnoDB: read in are 0:4636, should be 0:14074! 110904 17:46:50 InnoDB: Assertion failure in thread 2818890656 in file btr0pcur.c line 423 InnoDB: Failing assertion: page_is_comp(next_page) == page_is_comp(page) 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. 110904 17:46:50 - 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=16777216 read_buffer_size=262144 max_used_connections=3 max_threads=151 thread_count=2 connection_count=2 It is possible that mysqld could use up to key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 133434 K bytes of memory Hope that's ok; if not, decrease some variables in the equation. Thread pointer: 0xb8373598 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 = 0xa804d408 thread_stack 0x30000 /usr/sbin/mysqld(my_print_stacktrace+0x46)[0xb73c6529] Trying to get some variables. Some pointers may be invalid and cause the dump to abort. Query (0xb81f5d00): DELETE FROM EmailQueue WHERE CreationDateTime < NAME_CONST('_CutOffDate',_latin1'2010-09-04 17:46:47' COLLATE 'latin1_swedish_ci') Connection ID (thread ID): 247 Status: NOT_KILLED 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. 110904 17:46:50 mysqld_safe Number of processes running now: 0 110904 17:46:50 mysqld_safe mysqld restarted 110904 17:46:50 InnoDB: The InnoDB memory heap is disabled 110904 17:46:50 InnoDB: Mutexes and rw_locks use GCC atomic builtins 110904 17:46:50 InnoDB: Compressed tables use zlib 1.2.5 110904 17:46:50 InnoDB: Using Linux native AIO 110904 17:46:50 InnoDB: Initializing buffer pool, size = 128.0M 110904 17:46:50 InnoDB: Completed initialization of buffer pool 110904 17:46:50 InnoDB: highest supported file format is Barracuda. InnoDB: Log scan progressed past the checkpoint lsn 40267028985 110904 17:46:50 InnoDB: Database was not shut down normally! InnoDB: Starting crash recovery. InnoDB: Reading tablespace information from the .ibd files... InnoDB: Restoring possible half-written data pages from the doublewrite InnoDB: buffer... InnoDB: Doing recovery: scanned up to log sequence number 40268328083 InnoDB: 1 transaction(s) which must be rolled back or cleaned up InnoDB: in total 9 row operations to undo InnoDB: Trx id counter is 141C1C00 110904 17:46:50 InnoDB: Starting an apply batch of log records to the database... InnoDB: Progress in percents: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 InnoDB: Apply batch completed InnoDB: Last MySQL binlog file position 0 993686007, file name ./mysql-bin.000020 InnoDB: Starting in background the rollback of uncommitted transactions 110904 17:46:51 InnoDB: Rolling back trx with id 141C1AAA, 9 rows to undo 110904 17:46:51 InnoDB: Waiting for the background threads to start InnoDB: Rolling back of trx id 141C1AAA completed 110904 17:46:51 InnoDB: Rollback of non-prepared transactions completed 110904 17:46:52 InnoDB: 1.1.8 started; log sequence number 40268328083 110904 17:46:52 [Note] Recovering after a crash using mysql-bin 110904 17:47:10 [Note] Starting crash recovery... 110904 17:47:10 [Note] Crash recovery finished. 110904 17:47:10 [Note] Event Scheduler: Loaded 0 events 110904 17:47:10 [Note] /usr/sbin/mysqld: ready for connections. Version: '5.5.15-log' socket: '/var/run/mysqld/mysqld.sock' port: 3306 Source distribution
[27 Oct 2011 17:44]
Jeff Bilyk
Ticket #62634 (http://bugs.mysql.com/bug.php?id=62634) has been created that has updated information on specific errors and configuration that are being used, so closing this ticket as a duplicate.