[MDEV-13451] Assertion `!recv_no_ibuf_operations' failed in ulint ibuf_page_low Created: 2017-08-04  Updated: 2017-08-07  Resolved: 2017-08-07

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - InnoDB
Affects Version/s: 10.2
Fix Version/s: 10.2.8

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Marko Mäkelä
Resolution: Fixed Votes: 0
Labels: None

Attachments: File recv_no_ibuf_operations-2.test    
Issue Links:
Relates
relates to MDEV-13452 Assertion `!recv_no_log_write' failed... Closed

 Description   

10.2 6d51817d2cd79edbc15328bef532a5375f184219

mysqld: /data/src/10.2/storage/innobase/ibuf/ibuf0ibuf.cc:1144: ulint ibuf_page_low(const page_id_t&, const page_size_t&, ulint, const char*, unsigned int, mtr_t*): Assertion `!recv_no_ibuf_operations' failed.
170804 16:14:56 [ERROR] mysqld got signal 6 ;
 
#7  0x00007f5c32b42ee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
#8  0x000055b3ae6bcc57 in ibuf_page_low (page_id=..., page_size=..., x_latch=0, file=0x55b3aeca3878 "/data/src/10.2/storage/innobase/ibuf/ibuf0ibuf.cc", line=548, mtr=0x0) at /data/src/10.2/storage/innobase/ibuf/ibuf0ibuf.cc:1144
#9  0x000055b3ae8d1212 in buf_page_get_gen (page_id=..., page_size=..., rw_latch=2, guess=0x0, mode=10, file=0x55b3aeca3878 "/data/src/10.2/storage/innobase/ibuf/ibuf0ibuf.cc", line=548, mtr=0x7ffc538321c0, err=0x0) at /data/src/10.2/storage/innobase/buf/buf0buf.cc:4210
#10 0x000055b3ae6bbc4b in ibuf_init_at_db_start () at /data/src/10.2/storage/innobase/ibuf/ibuf0ibuf.cc:548
#11 0x000055b3ae9061b3 in dict_boot () at /data/src/10.2/storage/innobase/dict/dict0boot.cc:487
#12 0x000055b3ae812260 in innobase_start_or_create_for_mysql () at /data/src/10.2/storage/innobase/srv/srv0start.cc:2233
#13 0x000055b3ae652f99 in innobase_init (p=0x55b3b131a190) at /data/src/10.2/storage/innobase/handler/ha_innodb.cc:4422
#14 0x000055b3ae34a1b3 in ha_initialize_handlerton (plugin=0x55b3b12273c0) at /data/src/10.2/sql/handler.cc:512
#15 0x000055b3ae0f49e3 in plugin_initialize (tmp_root=0x7ffc5383a8a0, plugin=0x55b3b12273c0, argc=0x55b3af61e770 <remaining_argc>, argv=0x55b3b10de370, options_only=false) at /data/src/10.2/sql/sql_plugin.cc:1413
#16 0x000055b3ae0f55ec in plugin_init (argc=0x55b3af61e770 <remaining_argc>, argv=0x55b3b10de370, flags=2) at /data/src/10.2/sql/sql_plugin.cc:1695
#17 0x000055b3ae002062 in init_server_components () at /data/src/10.2/sql/mysqld.cc:5255
#18 0x000055b3ae0030e7 in mysqld_main (argc=144, argv=0x55b3b10de370) at /data/src/10.2/sql/mysqld.cc:5845
#19 0x000055b3adff7fc0 in main (argc=22, argv=0x7ffc5383b638) at /data/src/10.2/sql/main.cc:25

Test case is attached, run it with --mem --repeat=N

The assertion started failing in 10.2 tree with this commit:

commit 42f657cd2fab9acb00b15e00c7cc630f64ecc6ec
Author: Marko Mäkelä <marko.makela@mariadb.com>
Date:   Fri Jul 7 18:29:31 2017 +0300
 
    MDEV-13267 At startup with crash recovery: mtr_t::commit_checkpoint(lsn_t, bool): Assertion `!recv_no_log_write' failed

Before this commit, the same test case would cause Assertion `!recv_no_log_write' failure.



 Comments   
Comment by Marko Mäkelä [ 2017-08-07 ]

This is a debug-only assertion failure. We do not really need to set the ‘is inside change buffer’ flag in the code that only reads the change buffer state at startup.

At this point of execution, change buffer merge must indeed remain prohibited.

diff --git a/storage/innobase/ibuf/ibuf0ibuf.cc b/storage/innobase/ibuf/ibuf0ibuf.cc
index b4cbe7d4480..d021f8c0085 100644
--- a/storage/innobase/ibuf/ibuf0ibuf.cc
+++ b/storage/innobase/ibuf/ibuf0ibuf.cc
@@ -534,7 +534,6 @@ ibuf_init_at_db_start(void)
 
 	fseg_n_reserved_pages(header_page + IBUF_HEADER + IBUF_TREE_SEG_HEADER,
 			      &n_used, &mtr);
-	ibuf_enter(&mtr);
 
 	ut_ad(n_used >= 2);
 
@@ -556,7 +555,7 @@ ibuf_init_at_db_start(void)
 	mutex_exit(&ibuf_mutex);
 
 	ibuf->empty = page_is_empty(root);
-	ibuf_mtr_commit(&mtr);
+	mtr.commit();
 
 	ibuf->index = dict_mem_index_create(
 		"innodb_change_buffer", "CLUST_IND",

Comment by Jan Lindström (Inactive) [ 2017-08-07 ]

ok to push and no need for test case.

Generated at Thu Feb 08 08:05:42 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.