-
Type: Bug
-
Resolution: Duplicate
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
3
-
Storage Engines 2020-02-10, Storage Engines 2020-02-24
Sometimes while running test_rollback_to_stable02.py on branch wt-5421-history-store-upd-search leads to the following assert failure:
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51 #1 0x00007ffff7a24801 in __GI_abort () at abort.c:79 #2 0x00007ffff59aaaac in __wt_abort (session=0x555555dbe8e0) at ../src/os_common/os_abort.c:30 #3 0x00007ffff5899e68 in __page_read (session=0x555555dbe8e0, ref=0x7fffe4089ef0, flags=3236) at ../src/btree/bt_read.c:136 #4 0x00007ffff589a92f in __wt_page_in_func (session=0x555555dbe8e0, ref=0x7fffe4089ef0, flags=3236, func=0x7ffff5a54840 <__func__.38884> "__tree_walk_internal", line=460) at ../src/btree/bt_read.c:281 #5 0x00007ffff58ce21c in __wt_page_swap_func (session=0x555555dbe8e0, held=0x0, want=0x7fffe4089ef0, flags=3236, func=0x7ffff5a54840 <__func__.38884> "__tree_walk_internal", line=460) at ../src/include/btree.i:1695 #6 0x00007ffff58cecd7 in __tree_walk_internal (session=0x555555dbe8e0, refp=0x555556236b58, walkcntp=0x0, skip_func=0x0, func_cookie=0x0, flags=2180) at ../src/btree/bt_walk.c:460 #7 0x00007ffff58cef79 in __wt_tree_walk (session=0x555555dbe8e0, refp=0x555556236b58, flags=2176) at ../src/btree/bt_walk.c:529 #8 0x00007ffff58663d9 in __wt_btcur_next (cbt=0x5555562369e0, truncating=false) at ../src/btree/bt_curnext.c:704 #9 0x00007ffff591e85a in __curfile_next (cursor=0x5555562369e0) at ../src/cursor/cur_file.c:93 #10 0x00007ffff5cd39c5 in _wrap_Cursor_next (self=<optimized out>, args=<optimized out>) at wiredtiger_wrap.c:4161
Following is the assert:
WT_ASSERT(session, previous_state != WT_REF_DISK);
The ref is trying to read with state WT_REF_DISK but there is no addr associated with it.
The problem is during reconciliation of a page, in __rec_split_write() doesn't generate either disk image to re-instantiate. Due to which when the ref gets evicted it is changed to a state of WT_REF_DISK with no addr.
Following code may have a problem that leads to this issue.https://github.com/wiredtiger/wiredtiger/blob/b1186d9aa391a836794579bbc23d64b9d6d782ac/src/reconcile/rec_write.c#L1837