Xtrabackup 2.2.5 fails with non-default innodb_log_block_size in 5.6.19

Bug #1391216 reported by Francisco Bordenave on 2014-11-10
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Percona XtraBackup moved to https://jira.percona.com/projects/PXB
Fix Released
High
Sergei Glushchenko
2.1
Won't Fix
Undecided
Unassigned
2.2
Fix Released
High
Sergei Glushchenko
2.3
Fix Released
High
Sergei Glushchenko

Bug Description

Xtrabackup 2.2.5 fails in --apply-log stage throwing out this error:
InnoDB: Doing recovery: scanned up to log sequence number 14157798531072 (12%)
InnoDB: Doing recovery: scanned up to log sequence number 14157803773952 (12%)
InnoDB: Starting an apply batch of log records to the database...
InnoDB: Progress in percent: 2014-10-22 11:59:39 7fd3571a9720 InnoDB: Assertion failure in thread 140545676187424 in file fil0fil.cc line 5655
InnoDB: Failing assertion: (len % OS_FILE_LOG_BLOCK_SIZE) == 0
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.6/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
16:59:39 UTC - xtrabackup got signal 6 ;
This could be because you hit a bug or data is corrupted.
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.

Thread pointer: 0x1765eb0
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 = 1766ec0 thread_stack 0x10000
xtrabackup(my_print_stacktrace+0x35) [0x9f2a9c]
xtrabackup(handle_fatal_signal+0x2bb) [0x7f5cd3]
/lib64/libpthread.so.0(+0xf710) [0x7fd356d91710]
/lib64/libc.so.6(gsignal+0x35) [0x7fd3553ad635]
/lib64/libc.so.6(abort+0x175) [0x7fd3553aee15]
xtrabackup(fil_io(unsigned long, bool, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, void*, void*)+0x6a8) [0x68a870]
xtrabackup() [0x723237]
xtrabackup(buf_read_recv_pages(unsigned long, unsigned long, unsigned long, unsigned long const*, unsigned long)+0x1ce) [0x7242bf]
xtrabackup() [0x750697]
xtrabackup(recv_apply_hashed_log_recs(unsigned long)+0x2b1) [0x750956]
xtrabackup(recv_scan_log_recs(unsigned long, unsigned long, unsigned char const*, unsigned long, unsigned long, unsigned long*, unsigned long*)+0x68d) [0x752098]
xtrabackup() [0x7521b5]
xtrabackup(recv_recovery_from_checkpoint_start_func(unsigned long, unsigned long, unsigned long, unsigned long)+0x5fc) [0x7528cf]
xtrabackup(innobase_start_or_create_for_mysql()+0x14c4) [0x728276]
xtrabackup() [0x606fae]
xtrabackup() [0x60f6ba]
xtrabackup(main+0xc33) [0x610e5f]
/lib64/libc.so.6(__libc_start_main+0xfd) [0x7fd355399d5d]
xtrabackup() [0x603fb9]

Please report a bug at https://bugs.launchpad.net/percona-xtrabackup
innobackupex: Error:
innobackupex: ibbackup failed at /usr/bin/innobackupex line 2619.

backup-my.cnf file contents:
[mysqld]
innodb_checksum_algorithm=innodb
innodb_log_checksum_algorithm=innodb
innodb_data_file_path=ibdata1:10M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=1073741824
innodb_fast_checksum=0
innodb_page_size=16384
innodb_log_block_size=4096
innodb_undo_tablespaces=0

For what we can see in code in XB 2.2.5 it looks like there is an assertion in the file:
percona-xtrabackup-2.2.5 pancho$ grep -rn OS_FILE_LOG_BLOCK_SIZE * | grep fil0
storage/innobase/fil/fil0fil.cc:5654: ut_a(byte_offset % OS_FILE_LOG_BLOCK_SIZE == 0);
storage/innobase/fil/fil0fil.cc:5655: ut_a((len % OS_FILE_LOG_BLOCK_SIZE) == 0);

That is not present in 5.6.19 and recent Percona Server.

This bug looks like a regression from https://bugs.launchpad.net/percona-server/+bug/1116761 introduced in xtrabackup.

Related branches

Confirmed by code review. In current Percona Server 5.6.x code we have:

         ut_a(byte_offset % OS_MIN_LOG_BLOCK_SIZE == 0);
         ut_a((len % OS_MIN_LOG_BLOCK_SIZE) == 0);

assertions instead.

affects: percona-server → percona-xtrabackup
Changed in percona-xtrabackup:
status: New → Confirmed
tags: added: i47108

Percona now uses JIRA for bug reports so this bug report is migrated to: https://jira.percona.com/browse/PXB-414

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers