Details
-
Bug
-
Status: Closed
-
Major - P3
-
Resolution: Done
-
None
-
None
-
None
Description
We use the multiblock disk image to flag the existence of the saved-update list, which isn't correct, in __split_multi_inmem, we clear the disk image reference when transferring ownership of it to a split page, and if we ever reconcile that page again, we'll drop core trying to free non-existent disk blocks.
Here's the core:
(gdb) where
|
#0 __wt_vunpack_uint (pp=0x7fffdeff5a90, maxlen=0, xp=0x7fffdeff5a30)
|
at intpack.i:261
|
#1 0x000000000058ed12 in __block_buffer_to_addr (allocsize=512,
|
pp=0x7fffdeff5a90, offsetp=0x7fffdeff5ad8, sizep=0x7fffdeff5ad0,
|
cksump=0x7fffdeff5ad4) at src/block/block_addr.c:22
|
#2 0x000000000058eccb in __wt_block_buffer_to_addr (block=0x8034de000, p=0x0,
|
offsetp=0x7fffdeff5ad8, sizep=0x7fffdeff5ad0, cksump=0x7fffdeff5ad4)
|
at src/block/block_addr.c:83
|
#3 0x0000000000594e96 in __wt_block_free (session=0x803544d00,
|
block=0x8034de000, addr=0x0, addr_size=0) at src/block/block_ext.c:596
|
#4 0x000000000056ce74 in __bm_free (bm=0x8034d8280, session=0x803544d00,
|
addr=0x0, addr_size=0) at src/block/block_mgr.c:275
|
#5 0x000000000047c33b in __wt_btree_block_free (session=0x803544d00,
|
addr=0x0, addr_size=0) at btree.i:54
|
#6 0x000000000047c4d3 in __rec_split_discard (session=0x803544d00,
|
page=0x804f97800) at src/reconcile/rec_write.c:5466
|
#7 0x0000000000477b89 in __rec_write_wrapup (session=0x803544d00,
|
r=0x804448300, page=0x804f97800) at src/reconcile/rec_write.c:5580
|
#8 0x00000000004729f8 in __wt_reconcile (session=0x803544d00,
|
ref=0x80e425250, salvage=0x0, flags=11) at src/reconcile/rec_write.c:421
|
(gdb) frame 6
|
#6 0x000000000047c4d3 in __rec_split_discard (session=0x803544d00,
|
page=0x804f97800) at src/reconcile/rec_write.c:5466
|
5466 WT_RET(__wt_btree_block_free(session,
|
(gdb) p *multi
|
$8 = {
|
key = {
|
recno = 10008,
|
ikey = 0x2718
|
},
|
supd = 0x80f9f6000,
|
supd_entries = 713,
|
disk_image = 0x0,
|
addr = {
|
addr = 0x0,
|
size = 0 '\0',
|
type = 0 '\0',
|
reuse = 0 '\0'
|
},
|
size = 0,
|
cksum = 0
|
}
|
Here's the CONFIG:
############################################
|
abort=0
|
auto_throttle=1
|
backups=0
|
bitcnt=7
|
bloom=1
|
bloom_bit_count=37
|
bloom_hash_count=6
|
bloom_oldest=0
|
cache=83
|
checkpoints=0
|
checksum=uncompressed
|
chunk_size=5
|
compaction=0
|
compression=none
|
data_extend=0
|
data_source=file
|
delete_pct=12
|
dictionary=1
|
direct_io=0
|
encryption=rotn-7
|
evict_max=5
|
file_type=variable-length column-store
|
firstfit=0
|
huffman_key=1
|
huffman_value=0
|
in_memory=1
|
insert_pct=28
|
internal_key_truncation=1
|
internal_page_max=14
|
isolation=read-uncommitted
|
key_gap=11
|
key_max=32
|
key_min=12
|
leaf_page_max=17
|
leak_memory=0
|
logging=0
|
logging_archive=1
|
logging_compression=none
|
logging_prealloc=0
|
long_running_txn=0
|
lsm_worker_threads=3
|
merge_max=14
|
mmap=1
|
ops=1000000
|
prefix_compression=1
|
prefix_compression_min=2
|
repeat_data_pct=4
|
reverse=0
|
rows=10000
|
runs=1000
|
rebalance=0
|
salvage=0
|
split_pct=53
|
statistics=0
|
statistics_server=0
|
threads=19
|
timer=20
|
transaction-frequency=46
|
value_max=80
|
value_min=10
|
verify=0
|
wiredtiger_config=
|
write_pct=62
|
############################################
|