From a408e881cf73d06fc92097fce6ef9584e16edf77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 10 Jan 2018 09:17:43 +0200 Subject: [PATCH] MDEV-14174 crash on start with innodb-track-changed-pages The XtraDB option innodb_track_changed_pages causes the function log_group_read_log_seg() to be invoked even when recv_sys==NULL, leading to the SIGSEGV. This regression was caused by MDEV-11027 InnoDB log recovery is too noisy --- mysql-test/suite/innodb/t/innodb-master.opt | 1 + storage/xtradb/log/log0log.c | 16 +++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/mysql-test/suite/innodb/t/innodb-master.opt b/mysql-test/suite/innodb/t/innodb-master.opt index 5266978e4f0..8d9b0302a9e 100644 --- a/mysql-test/suite/innodb/t/innodb-master.opt +++ b/mysql-test/suite/innodb/t/innodb-master.opt @@ -2,3 +2,4 @@ --default-storage-engine=MyISAM --innodb-strict-mode=0 --innodb-file-per-table=0 +--loose-innodb-track-changed-pages diff --git a/storage/xtradb/log/log0log.c b/storage/xtradb/log/log0log.c index e327fa7ea9a..bed7e31da28 100644 --- a/storage/xtradb/log/log0log.c +++ b/storage/xtradb/log/log0log.c @@ -2503,7 +2503,6 @@ log_group_read_log_seg( ulint len; ulint source_offset; ibool sync; - ib_time_t time; ut_ad(mutex_own(&(log_sys->mutex))); @@ -2540,13 +2539,16 @@ loop: start_lsn += len; buf += len; - time = ut_time(); + if (recv_sys) { + ib_time_t time = ut_time(); - if (recv_sys->progress_time - time >= 15) { - recv_sys->progress_time = time; - ut_print_timestamp(stderr); - fprintf(stderr, " InnoDB: Read redo log up to LSN=%llu\n", - start_lsn); + if (recv_sys->progress_time - time >= 15) { + recv_sys->progress_time = time; + ut_print_timestamp(stderr); + fprintf(stderr, + " InnoDB: Read redo log up to LSN=%llu\n", + start_lsn); + } } if (start_lsn != end_lsn) {