Fix WT_MODIFY memory buffer error in test/format

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Layered Tables
    • Storage Engines, Storage Engines - Foundations
    • SE Foundations - Q3+ Backlog
    • None

      Running test/format, an assert is tripped

      #3  0x0000fffff7c65adc in __wt_abort (session=0xaaaaaac655e8)
          at /home/dda/wt/git/sls-1540-test-format-initial/src/os_common/os_abort.c:30
      #4  0x0000fffff7baeeb8 in __clayered_modify (cursor=0xffff6c0e4660, entries=0xaaaaad4e0a28, nentries=5)
          at /home/dda/wt/git/sls-1540-test-format-initial/src/cursor/cur_layered.c:1926
      #5  0x0000aaaaaaac2f60 in modify (tinfo=0xaaaaad4e0810, cursor=0xffff6c0e4660, positioned=false)
          at /home/dda/wt/git/sls-1540-test-format-initial/test/format/ops.c:1808
      #6  0x0000aaaaaaac3114 in row_modify (tinfo=0xaaaaad4e0810, positioned=false)
          at /home/dda/wt/git/sls-1540-test-format-initial/test/format/ops.c:1838
      #7  0x0000aaaaaaabef24 in table_op (tinfo=0xaaaaad4e0810, intxn=true, iso_level=ISOLATION_SNAPSHOT, op=MODIFY)
          at /home/dda/wt/git/sls-1540-test-format-initial/test/format/ops.c:797
      #8  0x0000aaaaaaac05b4 in ops (arg=0xaaaaad4e0810)
          at /home/dda/wt/git/sls-1540-test-format-initial/test/format/ops.c:1302
       

      The line is:

          WT_ASSERT(
            session, F_MASK(clayered->current_cursor, WT_CURSTD_VALUE_SET) == WT_CURSTD_VALUE_INT); 

      In this case, the value is not internal, it points to the memory buffer within the cursor->value:

       (gdb) p clayered->current_cursor->value
      $10 = {data = 0xffff6c2c7230, size = 78, mem = 0xffff6c2c7230, memsize = 3098, flags = 0}
      

      And the value in that buffer AFAICT looks correct. So maybe we can't depend on modify returning an internal buffer? What would be the consequences of allowing that?

      At any rate, we should understand if the assert is correct or if there is an underlying error to fix. I've assigned to Foundations to initially investigate from the layered table side.

      See the attached config file used when the assert happened: CONFIG-wt-2872

            Assignee:
            [DO NOT USE] Backlog - Storage Engines Team
            Reporter:
            Donald Anderson
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: