-
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