[MDEV-22900] Assertion `!ibuf_inside(mtr) || ibuf_page_low(block->page.id, block->page.size, (1), "storage/innobase/buf/buf0buf.cc", 4963, __null)' failed. Created: 2020-06-15  Updated: 2021-03-09  Resolved: 2021-03-09

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

Type: Bug Priority: Major
Reporter: Matthias Leich Assignee: Marko Mäkelä
Resolution: Cannot Reproduce Votes: 0
Labels: need_rr

Attachments: File 000934.log    

 Description   

Assert hit during RQG testing
mysqld: /home/mleich/10.2/storage/innobase/buf/buf0buf.cc:4963: ulint buf_page_optimistic_get(ulint, buf_block_t*, ib_uint64_t, const char*, unsigned int, mtr_t*): Assertion `!ibuf_inside(mtr) || ibuf_page_low(block->page.id, block->page.size, (1), "/home/mleich/10.2/storage/innobase/buf/buf0buf.cc", 4963, __null)' failed.
 
(rr) backtrace
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00002cc7430e4801 in __GI_abort () at abort.c:79
#2  0x00002cc7430d439a in __assert_fail_base (fmt=0x2cc74325b7d8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", 
    assertion=assertion@entry=0x5626d1674f98 "!ibuf_inside(mtr) || ibuf_page_low(block->page.id, block->page.size, (1), \"/home/mleich/10.2/storage/innobase/buf/buf0buf.cc\", 4963, __null)", 
    file=file@entry=0x5626d1672d08 "/home/mleich/10.2/storage/innobase/buf/buf0buf.cc", line=line@entry=4963, 
    function=function@entry=0x5626d1678ce0 <buf_page_optimistic_get(unsigned long, buf_block_t*, unsigned long, char const*, unsigned int, mtr_t*)::__PRETTY_FUNCTION__> "ulint buf_page_optimistic_get(ulint, buf_block_t*, ib_uint64_t, const char*, unsigned int, mtr_t*)") at assert.c:92
#3  0x00002cc7430d4412 in __GI___assert_fail (assertion=0x5626d1674f98 "!ibuf_inside(mtr) || ibuf_page_low(block->page.id, block->page.size, (1), \"/home/mleich/10.2/storage/innobase/buf/buf0buf.cc\", 4963, __null)", 
    file=0x5626d1672d08 "/home/mleich/10.2/storage/innobase/buf/buf0buf.cc", line=4963, 
    function=0x5626d1678ce0 <buf_page_optimistic_get(unsigned long, buf_block_t*, unsigned long, char const*, unsigned int, mtr_t*)::__PRETTY_FUNCTION__> "ulint buf_page_optimistic_get(ulint, buf_block_t*, ib_uint64_t, const char*, unsigned int, mtr_t*)") at assert.c:101
#4  0x00005626d107229d in buf_page_optimistic_get (rw_latch=2, block=0x25c344babf48, modify_clock=151, file=0x5626d15a23a0 "/home/mleich/10.2/storage/innobase/ibuf/ibuf0ibuf.cc", line=4191, mtr=0x7f59b4ff55a0)
    at /home/mleich/10.2/storage/innobase/buf/buf0buf.cc:4963
#5  0x00005626d1036a54 in btr_cur_optimistic_latch_leaves (block=0x25c344babf48, modify_clock=151, latch_mode=0x7f59b4ff49b8, cursor=0x7f59b4ff5320, file=0x5626d15a23a0 "/home/mleich/10.2/storage/innobase/ibuf/ibuf0ibuf.cc", line=4191, 
    mtr=0x7f59b4ff55a0) at /home/mleich/10.2/storage/innobase/btr/btr0cur.cc:422
#6  0x00005626d104c576 in btr_pcur_restore_position_func (latch_mode=2, cursor=0x7f59b4ff5320, file=0x5626d15a23a0 "/home/mleich/10.2/storage/innobase/ibuf/ibuf0ibuf.cc", line=4191, mtr=0x7f59b4ff55a0)
    at /home/mleich/10.2/storage/innobase/btr/btr0pcur.cc:280
#7  0x00005626d0e715f2 in ibuf_restore_pos (space=4, page_no=531, search_tuple=0xdd060000e30, mode=2, pcur=0x7f59b4ff5320, mtr=0x7f59b4ff55a0) at /home/mleich/10.2/storage/innobase/ibuf/ibuf0ibuf.cc:4191
#8  0x00005626d0e72e34 in ibuf_merge_or_delete_for_page (block=0x25c344b654a0, page_id=..., page_size=0x25c344b654b0, update_ibuf_bitmap=1) at /home/mleich/10.2/storage/innobase/ibuf/ibuf0ibuf.cc:4673
#9  0x00005626d1075b4f in buf_page_io_complete (bpage=0x25c344b654a0, dblwr=true, evict=false) at /home/mleich/10.2/storage/innobase/buf/buf0buf.cc:6147
#10 0x00005626d10fc9b0 in fil_aio_wait (segment=2) at /home/mleich/10.2/storage/innobase/fil/fil0fil.cc:5165
#11 0x00005626d0faf7e2 in io_handler_thread (arg=0x5626d1fed330 <n+16>) at /home/mleich/10.2/storage/innobase/srv/srv0start.cc:332
#12 0x00003cd0319816db in start_thread (arg=0x7f59b4ff6700) at pthread_create.c:463
#13 0x00002cc7431c588f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(rr) frame 5
#5  0x00005626d1036a54 in btr_cur_optimistic_latch_leaves (block=0x25c344babf48, modify_clock=151, latch_mode=0x7f59b4ff49b8, cursor=0x7f59b4ff5320, file=0x5626d15a23a0 "/home/mleich/10.2/storage/innobase/ibuf/ibuf0ibuf.cc", line=4191, 
    mtr=0x7f59b4ff55a0) at /home/mleich/10.2/storage/innobase/btr/btr0cur.cc:422
422                     return(buf_page_optimistic_get(*latch_mode, block,
(rr) list
417             ulint           left_page_no;
418
419             switch (*latch_mode) {
420             case BTR_SEARCH_LEAF:
421             case BTR_MODIFY_LEAF:
422                     return(buf_page_optimistic_get(*latch_mode, block,
423                                     modify_clock, file, line, mtr));
424             case BTR_SEARCH_PREV:
425             case BTR_MODIFY_PREV:
426                     mode = *latch_mode == BTR_SEARCH_PREV
(rr)
 
origin/10.2 7710f28eecc3e9761d7431ae7ae4e88564d706dd 2020-06-15T09:29:17+03:00
 
RQG
git clone https://github.com/mleich1/rqg --branch experimental RQG
origin/experimental 611a31e38a3bc157392c0748c95991b6a248bb3b 2020-06-09T15:31:46+02:00
 
perl rqg.pl \                        
--gendata=conf/engines/many_indexes1.zz \
--grammar=/home/mleich/RQG_mleich/conf/engines/many_indexes.yy \
--reporters=Backtrace,Deadlock1,ErrorLog,None \
--validators=None \
--mysqld=--innodb_use_native_aio=1 \
--mysqld=--innodb_lock_schedule_algorithm=fcfs \
--mysqld=--loose-idle_write_transaction_timeout=0 \
--mysqld=--loose-idle_transaction_timeout=0 \
--mysqld=--loose-idle_readonly_transaction_timeout=0 \
--mysqld=--connect_timeout=60 \
--mysqld=--interactive_timeout=28800 \
--mysqld=--slave_net_timeout=60 \
--mysqld=--net_read_timeout=30 \
--mysqld=--net_write_timeout=60 \
--mysqld=--loose-table_lock_wait_timeout=50 \
--mysqld=--wait_timeout=28800 \
--mysqld=--lock-wait-timeout=86400 \
--mysqld=--innodb-lock-wait-timeout=50 \
--no-mask \
--queries=10000000 \
--duration=100 \
--seed=random \
--mysqld=--log_output=none \
--mysqld=--log-bin \
--mysqld=--log_bin_trust_function_creators=1 \
--mysqld=--loose-max-statement-time=30 \
--mysqld=--loose-debug_assert_on_not_freed_memory=0 \
--engine=InnoDB \
--restart_timeout=120 \
--mysqld=--innodb_stats_persistent=on \
--threads=1 \
--mysqld=--innodb_page_size=4K \
--mysqld=--innodb-buffer-pool-size=5M \
--duration=300 \
--no_mask \
... certain local settings ...
 
The likelihood to hit this assert seems to be quite low.
STATISTICS      2351 -- 'STATUS_OK'
STATISTICS         2 -- 'STATUS_SERVER_CRASHED'     In both cases exact the current assert.



 Comments   
Comment by Matthias Leich [ 2020-07-24 ]

This issue was no more observed in my testing since 2020-07-07.
Maybe its fixed or I had simply no luck with my tests.

Comment by Matthias Leich [ 2021-03-09 ]

This issue was no more observed in my testing since 2020-07-07.
Per Marko the problem might be caused by the fixed
https://jira.mariadb.org/browse/MDEV-24449

Generated at Thu Feb 08 09:18:20 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.