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

Failure in lookaside insert leads to assertion in debug build

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • WT10.0.0, 4.3.3
    • Affects Version/s: None
    • Component/s: None
    • None
    • 1
    • Storage Engines 2019-12-16

      Assert gets hit in debug build when the lookaside insertion fails. 

      Thread 1 "python" received signal SIGABRT, Aborted.
      __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
      51 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
      (gdb) bt
      #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
      #1 0x00007ffff7a24801 in __GI_abort () at abort.c:79
      #2 0x00007ffff58b3b58 in __wt_abort (session=0x555555db22c0) at ../src/os_common/os_abort.c:30
      #3 0x00007ffff593262a in __wt_txn_rollback (session=0x555555db22c0, cfg=0x0) at ../src/txn/txn.c:1265
      #4 0x00007ffff57f306b in __wt_las_insert_block (cursor=0x555555e0b550, btree=0x555555e5e950, page=0x555555e6f410, multi=0x555555f9c720, key=0x555555e6f980) at ../src/cache/cache_las.c:776
      #5 0x00007ffff58e9c5e in __rec_las_wrapup (session=0x555555db6620, r=0x555555fa9ea0) at ../src/reconcile/rec_write.c:2408
      #6 0x00007ffff58e9340 in __rec_write_wrapup (session=0x555555db6620, r=0x555555fa9ea0, page=0x555555e6f410) at ../src/reconcile/rec_write.c:2230
      #7 0x00007ffff58e46a1 in __reconcile (session=0x555555db6620, ref=0x555555d633d0, salvage=0x0, flags=138, lookaside_retryp=0x0, page_lockedp=0x7fffffffc49a) at ../src/reconcile/rec_write.c:209
      #8 0x00007ffff58e4239 in __wt_reconcile (session=0x555555db6620, ref=0x555555d633d0, salvage=0x0, flags=138, lookaside_retryp=0x0) at ../src/reconcile/rec_write.c:102
      #9 0x00007ffff58780fc in __evict_review (session=0x555555db6620, ref=0x555555d633d0, evict_flags=4, inmem_splitp=0x7fffffffc58f) at ../src/evict/evict_page.c:685
      #10 0x00007ffff5876070 in __wt_evict (session=0x555555db6620, ref=0x555555d633d0, previous_state=5, flags=4) at ../src/evict/evict_page.c:149
      #11 0x00007ffff5875e85 in __wt_page_release_evict (session=0x555555db6620, ref=0x555555d633d0, flags=0) at ../src/evict/evict_page.c:80
      #12 0x00007ffff5782ada in __wt_page_release (session=0x555555db6620, ref=0x555555d633d0, flags=0) at ../src/include/btree.i:1455
      #13 0x00007ffff57832e8 in __cursor_reset (cbt=0x555555e01040) at ../src/include/cursor.i:208
      #14 0x00007ffff578338b in __cursor_func_init (cbt=0x555555e01040, reenter=true) at ../src/include/cursor.i:329
      #15 0x00007ffff5786793 in __btcur_update (cbt=0x555555e01040, value=0x555555e01168, modify_type=4) at ../src/btree/bt_cursor.c:1242
      #16 0x00007ffff5787637 in __wt_btcur_update (cbt=0x555555e01040) at ../src/btree/bt_cursor.c:1521
      #17 0x00007ffff5832c83 in __curfile_update (cursor=0x555555e01040) at ../src/cursor/cur_file.c:356
      

      Following is the assert code that hit when the lookaside transaction rollbacks.

      1264            /* Assert it's not an update to the lookaside file. */
      1265            WT_ASSERT(
      1266              session, S2C(session)->cache->las_fileid == 0 || !F_ISSET(op->btree, WT_BTREE_LOOKASIDE));
      

      Correction:
      Remove the assert, assert is wrong, it is possible that lookaside transaction can fail because of some reasons.

            Assignee:
            haribabu.kommi@mongodb.com Haribabu Kommi
            Reporter:
            haribabu.kommi@mongodb.com Haribabu Kommi
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: