Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: WT2.7.0
    • Labels:
      None
    • # Replies:
      5
    • Last comment by Customer:
      true

      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
      

        Issue Links

          Activity

          Hide
          xgen-internal-githook Githook User added a comment -

          Author:

          {u'username': u'keithbostic', u'name': u'Keith Bostic', u'email': u'keith@wiredtiger.com'}

          Message: WT-2191: in-memory configuration means multi->supd_dsk can be set in
          cases where multi->supd is NULL, that is, there aren't any updates to
          restore, but there is a disk image.
          Branch: develop
          https://github.com/wiredtiger/wiredtiger/commit/956cc667d5fcee455bb161eb1c83fb90a77d3b7c

          Show
          xgen-internal-githook Githook User added a comment - Author: {u'username': u'keithbostic', u'name': u'Keith Bostic', u'email': u'keith@wiredtiger.com'} Message: WT-2191 : in-memory configuration means multi->supd_dsk can be set in cases where multi->supd is NULL, that is, there aren't any updates to restore, but there is a disk image. Branch: develop https://github.com/wiredtiger/wiredtiger/commit/956cc667d5fcee455bb161eb1c83fb90a77d3b7c
          Hide
          xgen-internal-githook Githook User added a comment -

          Author:

          {u'username': u'keithbostic', u'name': u'Keith Bostic', u'email': u'keith@wiredtiger.com'}

          Message: WT-2191: the reconcilation disk images are no longer uniquely associated with
          "saved unresolved updates", the "supd" prefix doesn't make sense; rename disk
          images from "supd_dsk" and "dsk" to "disk_image".
          Branch: develop
          https://github.com/wiredtiger/wiredtiger/commit/0818fc3f4f14c9d6d86cfbb92ffa203957d6ec2a

          Show
          xgen-internal-githook Githook User added a comment - Author: {u'username': u'keithbostic', u'name': u'Keith Bostic', u'email': u'keith@wiredtiger.com'} Message: WT-2191 : the reconcilation disk images are no longer uniquely associated with "saved unresolved updates", the "supd" prefix doesn't make sense; rename disk images from "supd_dsk" and "dsk" to "disk_image". Branch: develop https://github.com/wiredtiger/wiredtiger/commit/0818fc3f4f14c9d6d86cfbb92ffa203957d6ec2a
          Hide
          xgen-internal-githook Githook User added a comment -

          Author:

          {u'username': u'michaelcahill', u'name': u'Michael Cahill', u'email': u'michael.cahill@mongodb.com'}

          Message: Merge pull request #2279 from wiredtiger/wt-2191-in-memory-disk-image

          WT-2191: in memory disk image no longer the same as saved updates
          Branch: develop
          https://github.com/wiredtiger/wiredtiger/commit/30ab327b43bc58a87562ce4be18370def45d2d06

          Show
          xgen-internal-githook Githook User added a comment - Author: {u'username': u'michaelcahill', u'name': u'Michael Cahill', u'email': u'michael.cahill@mongodb.com'} Message: Merge pull request #2279 from wiredtiger/wt-2191-in-memory-disk-image WT-2191 : in memory disk image no longer the same as saved updates Branch: develop https://github.com/wiredtiger/wiredtiger/commit/30ab327b43bc58a87562ce4be18370def45d2d06
          Hide
          xgen-internal-githook Githook User added a comment -

          Author:

          {u'username': u'keithbostic', u'name': u'Keith Bostic', u'email': u'keith@wiredtiger.com'}

          Message: WT-2191: Fix another problem in the in-memory changes, the list of saved
          updates is only interesting if WT_EVICT_UPDATE_RESTORE is also set. The
          real change is is to include "F_ISSET(r, WT_EVICT_UPDATE_RESTORE)" in the
          test, but I've convinced myself that "bnd->disk_image" is short-hand for:

          F_ISSET(r, WT_EVICT_IN_MEMORY) ||
          (F_ISSET(r, WT_EVICT_UPDATE_RESTORE) && bnd->supd != NULL)

          so I'm using that test instead of the longer version. Note that the
          lower-level split routines (__rec_split_col and __rec_split_row) use
          this same short-hand.
          Branch: develop
          https://github.com/wiredtiger/wiredtiger/commit/713e52101cbd9708e04067f9b3265e9849319a9d

          Show
          xgen-internal-githook Githook User added a comment - Author: {u'username': u'keithbostic', u'name': u'Keith Bostic', u'email': u'keith@wiredtiger.com'} Message: WT-2191 : Fix another problem in the in-memory changes, the list of saved updates is only interesting if WT_EVICT_UPDATE_RESTORE is also set. The real change is is to include "F_ISSET(r, WT_EVICT_UPDATE_RESTORE)" in the test, but I've convinced myself that "bnd->disk_image" is short-hand for: F_ISSET(r, WT_EVICT_IN_MEMORY) || (F_ISSET(r, WT_EVICT_UPDATE_RESTORE) && bnd->supd != NULL) so I'm using that test instead of the longer version. Note that the lower-level split routines (__rec_split_col and __rec_split_row) use this same short-hand. Branch: develop https://github.com/wiredtiger/wiredtiger/commit/713e52101cbd9708e04067f9b3265e9849319a9d
          Hide
          xgen-internal-githook Githook User added a comment -

          Author:

          {u'username': u'keithbostic', u'name': u'Keith Bostic', u'email': u'keith@wiredtiger.com'}

          Message: WT-2191: semantic sugar, flip it so the common test (disk_image == NULL)
          is first, and it reads better when we're not testing a negative.
          Branch: develop
          https://github.com/wiredtiger/wiredtiger/commit/0813188d80ee79e6381d03fd8dc502d6b3545ace

          Show
          xgen-internal-githook Githook User added a comment - Author: {u'username': u'keithbostic', u'name': u'Keith Bostic', u'email': u'keith@wiredtiger.com'} Message: WT-2191 : semantic sugar, flip it so the common test (disk_image == NULL) is first, and it reads better when we're not testing a negative. Branch: develop https://github.com/wiredtiger/wiredtiger/commit/0813188d80ee79e6381d03fd8dc502d6b3545ace

            People

            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:
                Days since reply:
                1 year, 29 weeks, 6 days ago
                Date of 1st Reply: