-
Type: Bug
-
Resolution: Done
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
There's a core dump in develop:
(gdb) where #0 0x00000000004c7395 in __split_multi_inmem (session=0x801447200, orig=0x821548060, ref=0x82ba88c40, multi=0x806847000) at src/btree/bt_split.c:719 #1 0x00000000004c7233 in __wt_multi_to_ref (session=0x801447200, page=0x821548060, multi=0x806847000, refp=0x830158600, incrp=0x7ffffdfefd10) at src/btree/bt_split.c:858 #2 0x00000000004c9949 in __split_multi (session=0x801447200, ref=0x821557fd0, closing=false) at src/btree/bt_split.c:1621 #3 0x00000000004c97fc in __wt_split_multi (session=0x801447200, ref=0x821557fd0, closing=0) at src/btree/bt_split.c:1687 #4 0x000000000042d14b in __evict_page_dirty_update (session=0x801447200, ref=0x821557fd0, closing=false) at src/evict/evict_page.c:285 #5 0x000000000042c3f5 in __wt_evict (session=0x801447200, ref=0x821557fd0, closing=false) at src/evict/evict_page.c:123 #6 0x0000000000428273 in __evict_page (session=0x801447200, is_server=false) at src/evict/evict_lru.c:1467 #7 0x000000000042ac9c in __evict_lru_pages (session=0x801447200, is_server=false) at src/evict/evict_lru.c:818 #8 0x000000000042a678 in __evict_worker (arg=0x8014f50e0) at src/evict/evict_lru.c:434 #9 0x00000008009af4a4 in pthread_create () from /lib/libthr.so.3 #10 0x0000000000000000 in ?? () (gdb) frame 0 #0 0x00000000004c7395 in __split_multi_inmem (session=0x801447200, orig=0x821548060, ref=0x82ba88c40, multi=0x806847000) at src/btree/bt_split.c:719 719 WT_RET(__wt_page_inmem(session, ref, (gdb) l 714 * Clear the disk image and link the page into the passed-in WT_REF to 715 * simplify error handling: our caller will not discard the disk image 716 * when discarding the original page, and our caller will discard the 717 * allocated page on error, when discarding the allocated WT_REF. 718 */ 719 WT_RET(__wt_page_inmem(session, ref, 720 multi->supd_dsk, ((WT_PAGE_HEADER *)multi->supd_dsk)->mem_size, 721 WT_PAGE_DISK_ALLOC, &page)); 722 multi->supd_dsk = NULL; 723 (gdb) p multi->supd_dsk $7 = (void *) 0x0 (gdb) p ((WT_PAGE_HEADER *)multi->supd_dsk)->mem_size
Caused by the in-memory change, I believe:
844 if (multi->supd == NULL && multi->supd_dsk == NULL) { 845 /* 846 * Copy the address: we could simply take the buffer, but that 847 * would complicate error handling, freeing the reference array 848 * would have to avoid freeing the memory, and it's not worth 849 * the confusion. 850 */ 851 WT_RET(__wt_calloc_one(session, &addr)); 852 ref->addr = addr; 853 addr->size = multi->addr.size; 854 addr->type = multi->addr.type; 855 WT_RET(__wt_strndup(session, 856 multi->addr.addr, addr->size, &addr->addr)); 857 } else 858 WT_RET(__split_multi_inmem(session, page, ref, multi)); (gdb) p multi->supd $10 = (struct __wt_save_upd *) 0x80684e200 (gdb) p multi->supd_dsk $11 = (void *) 0x0
- is depended on by
-
WT-2224 backup_restore.js fails with tcmalloc invalid free pointer in __wt_split_multi
- Closed
-
SERVER-21173 WiredTiger changes for 3.2.0-rc2
- Closed
- links to