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

Fix bugs that could allow more than one birthmark in an update chain

    • Storage Engines 2019-07-19
    • v4.0

      One wiredtiger-test-format-stress-sanitizer-old-branches job run detected an assertion failure about unexpected birthmark in an eviction triggered page splitting case on mongodb-4.0 branch, on margay-aws

      http://build.wiredtiger.com:8080/job/wiredtiger-test-format-stress-sanitizer-old-branches/1539/console

      + eval nice ./t
      ++ nice ./t
      [1561963227:513183][5073:0x7f0e8e2cd700], t, file:wt, WT_CURSOR.update: __check_upd_list, 1424: birthmark_count <= 1
      [1561963227:513237][5073:0x7f0e8e2cd700], t, file:wt, WT_CURSOR.update: __wt_abort, 30: aborting WiredTiger library
      /tmp/jenkins3345424513419158618.sh: line 37:  5073 Aborted                 (core dumped) nice ./t 

      The stack trace:

      (gdb) bt
      #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
      #1  0x00007f0e97ccd801 in __GI_abort () at abort.c:79
      #2  0x0000000000655854 in __wt_abort (session=0x7f0e99319260) at ../src/os_common/os_abort.c:32
      #3  0x00000000008ea7a6 in __check_upd_list (session=0x7f0e99319260, upd=0x0) at ../src/btree/bt_split.c:1424
      #4  0x00000000008e7ef0 in __split_multi_inmem (session=0x7f0e99319260, orig=0x60f00082cb10, multi=0x6190030bb0e8, ref=0x60e00000a760)
          at ../src/btree/bt_split.c:1524
      #5  0x00000000008e696e in __wt_multi_to_ref (session=0x7f0e99319260, page=0x60f00082cb10, multi=0x6190030bb0e8, refp=0x6020000fcbf8,
          incrp=0x7f0e8e2c7e60, closing=false) at ../src/btree/bt_split.c:1732
      #6  0x0000000000907741 in __split_multi (session=0x7f0e99319260, ref=0x60e00063e340, closing=false) at ../src/btree/bt_split.c:2159
      #7  0x00000000008e8f6a in __split_multi_lock (session=0x7f0e99319260, ref=0x60e00063e340, closing=0) at ../src/btree/bt_split.c:2206
      #8  0x00000000008e8da9 in __wt_split_multi (session=0x7f0e99319260, ref=0x60e00063e340, closing=0) at ../src/btree/bt_split.c:2234
      #9  0x0000000000610049 in __evict_page_dirty_update (session=0x7f0e99319260, ref=0x60e00063e340, evict_flags=0) at ../src/evict/evict_page.c:408
      #10 0x000000000060bd9f in __wt_evict (session=0x7f0e99319260, ref=0x60e00063e340, previous_state=5, flags=0) at ../src/evict/evict_page.c:226
      #11 0x00000000005edee4 in __evict_page (session=0x7f0e99319260, is_server=false) at ../src/evict/evict_lru.c:2352
      #12 0x00000000005eab71 in __wt_cache_eviction_worker (session=0x7f0e99319260, busy=false, readonly=false, pct_full=100.00640616692931)
          at ../src/evict/evict_lru.c:2447
      #13 0x0000000000849671 in __wt_cache_eviction_check (session=0x7f0e99319260, busy=false, readonly=false, didworkp=0x0) at ../src/include/cache.i:453
      #14 0x0000000000848cd9 in __cursor_enter (session=0x7f0e99319260) at ../src/include/cursor.i:152
      #15 0x0000000000837219 in __cursor_func_init (cbt=0x6180001c8480, reenter=true) at ../src/include/cursor.i:357
      #16 0x0000000000840292 in __btcur_update (cbt=0x6180001c8480, value=0x6180001c85a8, modify_type=4) at ../src/btree/bt_cursor.c:1286
      #17 0x0000000000841dc7 in __wt_btcur_update (cbt=0x6180001c8480) at ../src/btree/bt_cursor.c:1582
      #18 0x0000000000a0194e in __curfile_update (cursor=0x6180001c8480) at ../src/cursor/cur_file.c:366
      #19 0x000000000052fa0b in row_update (tinfo=0x61300007b9c0, cursor=0x6180001c8480, positioned=false) at ../../../test/format/ops.c:1757
      #20 0x0000000000527b34 in ops (arg=0x61300007b9c0) at ../../../test/format/ops.c:1009
      #21 0x00000000004e8e4f in __asan::AsanThread::ThreadStart(unsigned long, __sanitizer::atomic_uintptr_t*) ()
      #22 0x00007f0e98c7c6db in start_thread (arg=0x7f0e8e2cd700) at pthread_create.c:463
      #23 0x00007f0e97dae88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 

      The configuration:

      ############################################
      #  RUN PARAMETERS
      ############################################
      abort=0
      alter=0
      auto_throttle=1
      backups=1
      bitcnt=7
      bloom=1
      bloom_bit_count=60
      bloom_hash_count=12
      bloom_oldest=0
      cache=136
      cache_minimum=0
      checkpoints=on
      checkpoint_log_size=54
      checkpoint_wait=60
      checksum=uncompressed
      chunk_size=4
      compaction=0
      compression=snappy
      data_extend=0
      data_source=file
      delete_pct=0
      dictionary=0
      direct_io=0
      encryption=none
      evict_max=2
      file_type=row-store
      firstfit=0
      huffman_key=0
      huffman_value=0
      independent_thread_rng=1
      in_memory=0
      insert_pct=6
      internal_key_truncation=1
      internal_page_max=10
      isolation=snapshot
      key_gap=15
      key_max=72
      key_min=26
      leaf_page_max=11
      leak_memory=0
      logging=1
      logging_archive=1
      logging_compression=none
      logging_file_max=434471
      logging_prealloc=0
      long_running_txn=0
      lsm_worker_threads=4
      memory_page_max=4
      merge_max=18
      mmap=1
      modify_pct=92
      ops=100000
      prefix_compression=0
      prefix_compression_min=3
      prepare=0
      quiet=1
      read_pct=0
      rebalance=1
      repeat_data_pct=6
      reverse=0
      rows=100000
      runs=1
      salvage=1
      split_pct=54
      statistics=1
      statistics_server=0
      threads=17
      timer=360
      timing_stress_checkpoint=0
      timing_stress_lookaside_sweep=0
      timing_stress_split_1=0
      timing_stress_split_2=0
      timing_stress_split_3=0
      timing_stress_split_4=0
      timing_stress_split_5=0
      timing_stress_split_6=0
      timing_stress_split_7=0
      timing_stress_split_8=0
      transaction_timestamps=1
      transaction-frequency=21
      truncate=1
      value_max=2603
      value_min=18
      verify=1
      wiredtiger_config=
      write_pct=2
      ############################################ 

            Assignee:
            alexander.gorrod@mongodb.com Alexander Gorrod
            Reporter:
            luke.chen@mongodb.com Luke Chen
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: