Uploaded image for project: 'WiredTiger'
  1. WiredTiger
  2. WT-2191

__split_multi_inmem core dump

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • WT2.7.0
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      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
      

            Assignee:
            keith.bostic@mongodb.com Keith Bostic (Inactive)
            Reporter:
            keith.bostic@mongodb.com Keith Bostic (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: