Details
-
Bug
-
Resolution: Done
-
Major - P3
-
None
-
None
-
None
Description
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
|
Attachments
Issue Links
- 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