Commit 8aa82356 authored by heikki@donna.mysql.fi's avatar heikki@donna.mysql.fi

buf0buf.ic, mtr0log.ic:

  Add diagnostic code to catch possible space id or page no errors in the log
parent eb883b30
...@@ -211,6 +211,9 @@ buf_block_align( ...@@ -211,6 +211,9 @@ buf_block_align(
block = buf_pool_get_nth_block(buf_pool, (ptr - frame_zero) block = buf_pool_get_nth_block(buf_pool, (ptr - frame_zero)
>> UNIV_PAGE_SIZE_SHIFT); >> UNIV_PAGE_SIZE_SHIFT);
ut_a(block >= buf_pool->blocks);
ut_a(block < buf_pool->blocks + buf_pool->max_size);
return(block); return(block);
} }
...@@ -235,6 +238,9 @@ buf_block_align_low( ...@@ -235,6 +238,9 @@ buf_block_align_low(
block = buf_pool_get_nth_block(buf_pool, (ptr - frame_zero) block = buf_pool_get_nth_block(buf_pool, (ptr - frame_zero)
>> UNIV_PAGE_SIZE_SHIFT); >> UNIV_PAGE_SIZE_SHIFT);
ut_a(block >= buf_pool->blocks);
ut_a(block < buf_pool->blocks + buf_pool->max_size);
return(block); return(block);
} }
...@@ -253,9 +259,9 @@ buf_frame_align( ...@@ -253,9 +259,9 @@ buf_frame_align(
frame = ut_align_down(ptr, UNIV_PAGE_SIZE); frame = ut_align_down(ptr, UNIV_PAGE_SIZE);
ut_ad((ulint)frame ut_a((ulint)frame
>= (ulint)(buf_pool_get_nth_block(buf_pool, 0)->frame)); >= (ulint)(buf_pool_get_nth_block(buf_pool, 0)->frame));
ut_ad((ulint)frame <= (ulint)(buf_pool_get_nth_block(buf_pool, ut_a((ulint)frame <= (ulint)(buf_pool_get_nth_block(buf_pool,
buf_pool->max_size - 1)->frame)); buf_pool->max_size - 1)->frame));
return(frame); return(frame);
} }
......
...@@ -163,6 +163,13 @@ mlog_write_initial_log_record_fast( ...@@ -163,6 +163,13 @@ mlog_write_initial_log_record_fast(
space = buf_block_get_space(block); space = buf_block_get_space(block);
offset = buf_block_get_page_no(block); offset = buf_block_get_page_no(block);
if (space != 0 || offset > 0x8FFFFFFF) {
fprintf(stderr,
"InnoDB: error: buffer page pointer %lx has nonsensical space id %lu\n"
"InnoDB: or page no %lu\n", (ulint)ptr, space, offset);
ut_a(0);
}
mach_write_to_1(log_ptr, type); mach_write_to_1(log_ptr, type);
log_ptr++; log_ptr++;
log_ptr += mach_write_compressed(log_ptr, space); log_ptr += mach_write_compressed(log_ptr, space);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment