- 
    Type:
Bug
 - 
    Resolution: Done
 - 
    Priority:
Major - P3
 - 
    Affects Version/s: None
 - 
    Component/s: None
 - 
    None
 
- 
        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