diff --git a/dist/s_string.ok b/dist/s_string.ok
index 068abb5..aee8790 100644
--- a/dist/s_string.ok
+++ b/dist/s_string.ok
@@ -210,6 +210,7 @@ Kanowski's
 Kounavis
 LANGID
 LAS
+LASdump
 LF
 LLLLLL
 LLLLLLL
diff --git a/src/btree/bt_debug.c b/src/btree/bt_debug.c
index 7ed8511..2b6b89d 100644
--- a/src/btree/bt_debug.c
+++ b/src/btree/bt_debug.c
@@ -684,6 +684,28 @@ __wt_debug_page(void *session_arg, WT_BTREE *btree, WT_REF *ref, const char *ofi
 }
 
 /*
+ * __wt_debug_cursor_las --
+ *     Dump the LAS tree given a user cursor.
+ */
+int
+__wt_debug_cursor_las(void *cursor_arg, const char *ofile)
+  WT_GCC_FUNC_ATTRIBUTE((visibility("default")))
+{
+    WT_CONNECTION_IMPL *conn;
+    WT_CURSOR *cursor;
+    WT_CURSOR_BTREE *cbt;
+    WT_SESSION_IMPL *las_session;
+
+    cursor = cursor_arg;
+    conn = S2C((WT_SESSION_IMPL *)cursor->session);
+    las_session = conn->cache->las_session[0];
+    if (las_session == NULL)
+        return (0);
+    cbt = (WT_CURSOR_BTREE *)las_session->las_cursor;
+    return (__wt_debug_tree_all(las_session, cbt->btree, NULL, ofile));
+}
+
+/*
  * __wt_debug_cursor_page --
  *     Dump the in-memory information for a cursor-referenced page.
  */
@@ -1171,7 +1193,8 @@ __debug_update(WT_DBG *ds, WT_UPDATE *upd, bool hexbyte)
         if (upd->txnid == WT_TXN_ABORTED)
             WT_RET(ds->f(ds,
               "\t"
-              "txn id aborted"));
+              "txn id aborted (was %" PRIu64 ")",
+              upd->orig_txnid));
         else
             WT_RET(ds->f(ds,
               "\t"
@@ -1181,7 +1204,9 @@ __debug_update(WT_DBG *ds, WT_UPDATE *upd, bool hexbyte)
         WT_RET(ds->f(ds, ", start_ts %s", __wt_timestamp_to_string(upd->start_ts, ts_string)));
         if (upd->durable_ts != WT_TS_NONE)
             WT_RET(
-              ds->f(ds, ", durable-ts %s", __wt_timestamp_to_string(upd->durable_ts, ts_string)));
+              ds->f(ds, ", durable_ts %s", __wt_timestamp_to_string(upd->durable_ts, ts_string)));
+
+        WT_RET(ds->f(ds, ", alloc %" PRIu32, upd->alloc_id));
 
         prepare_state = NULL;
         switch (upd->prepare_state) {
diff --git a/src/btree/bt_delete.c b/src/btree/bt_delete.c
index 9749cef..a6388f6 100644
--- a/src/btree/bt_delete.c
+++ b/src/btree/bt_delete.c
@@ -231,8 +231,10 @@ __wt_delete_page_rollback(WT_SESSION_IMPL *session, WT_REF *ref)
      */
     WT_ASSERT(session, locked);
     if ((updp = ref->page_del->update_list) != NULL)
-        for (; *updp != NULL; ++updp)
+        for (; *updp != NULL; ++updp) {
+            (*updp)->orig_txnid = (*updp)->txnid;
             (*updp)->txnid = WT_TXN_ABORTED;
+        }
 
     WT_REF_SET_STATE(ref, current_state);
 
@@ -301,12 +303,12 @@ __wt_delete_page_skip(WT_SESSION_IMPL *session, WT_REF *ref, bool visible_all)
  *     Allocate and initialize a page-deleted tombstone update structure.
  */
 static int
-__tombstone_update_alloc(
-  WT_SESSION_IMPL *session, WT_PAGE_DELETED *page_del, WT_UPDATE **updp, size_t *sizep)
+__tombstone_update_alloc(WT_SESSION_IMPL *session, WT_PAGE_DELETED *page_del, WT_UPDATE **updp,
+  size_t *sizep, uint32_t alloc_id)
 {
     WT_UPDATE *upd;
 
-    WT_RET(__wt_update_alloc(session, NULL, &upd, sizep, WT_UPDATE_TOMBSTONE));
+    WT_RET(__wt_update_alloc(session, NULL, &upd, sizep, WT_UPDATE_TOMBSTONE, alloc_id));
 
     /*
      * Cleared memory matches the lowest possible transaction ID and timestamp, do nothing.
@@ -417,7 +419,7 @@ __wt_delete_page_instantiate(WT_SESSION_IMPL *session, WT_REF *ref)
     upd_array = page->modify->mod_row_update;
     if ((insert = WT_ROW_INSERT_SMALLEST(page)) != NULL)
         WT_SKIP_FOREACH (ins, insert) {
-            WT_ERR(__tombstone_update_alloc(session, page_del, &upd, &size));
+            WT_ERR(__tombstone_update_alloc(session, page_del, &upd, &size, 0xde01));
             upd->next = ins->upd;
             ins->upd = upd;
 
@@ -425,7 +427,7 @@ __wt_delete_page_instantiate(WT_SESSION_IMPL *session, WT_REF *ref)
                 page_del->update_list[count++] = upd;
         }
     WT_ROW_FOREACH (page, rip, i) {
-        WT_ERR(__tombstone_update_alloc(session, page_del, &upd, &size));
+        WT_ERR(__tombstone_update_alloc(session, page_del, &upd, &size, 0xde02));
         upd->next = upd_array[WT_ROW_SLOT(page, rip)];
         upd_array[WT_ROW_SLOT(page, rip)] = upd;
 
@@ -434,7 +436,7 @@ __wt_delete_page_instantiate(WT_SESSION_IMPL *session, WT_REF *ref)
 
         if ((insert = WT_ROW_INSERT(page, rip)) != NULL)
             WT_SKIP_FOREACH (ins, insert) {
-                WT_ERR(__tombstone_update_alloc(session, page_del, &upd, &size));
+                WT_ERR(__tombstone_update_alloc(session, page_del, &upd, &size, 0xde03));
                 upd->next = ins->upd;
                 ins->upd = upd;
 
diff --git a/src/btree/bt_read.c b/src/btree/bt_read.c
index b212214..ccdf07f 100644
--- a/src/btree/bt_read.c
+++ b/src/btree/bt_read.c
@@ -173,7 +173,7 @@ __las_page_instantiate(WT_SESSION_IMPL *session, WT_REF *ref)
         /* Allocate the WT_UPDATE structure. */
         WT_ERR(cursor->get_value(cursor, &las_txnid, &las_timestamp, &durable_timestamp,
           &prepare_state, &upd_type, &las_value));
-        WT_ERR(__wt_update_alloc(session, &las_value, &upd, &incr, upd_type));
+        WT_ERR(__wt_update_alloc(session, &las_value, &upd, &incr, upd_type, 0x3ad01));
         total_incr += incr;
         upd->txnid = las_txnid;
         upd->durable_ts = durable_timestamp;
diff --git a/src/btree/col_modify.c b/src/btree/col_modify.c
index 8bbda44..39822c8 100644
--- a/src/btree/col_modify.c
+++ b/src/btree/col_modify.c
@@ -127,7 +127,7 @@ __wt_col_modify(WT_SESSION_IMPL *session, WT_CURSOR_BTREE *cbt, uint64_t recno,
         WT_ERR(__wt_txn_update_check(session, old_upd = cbt->ins->upd));
 
         /* Allocate a WT_UPDATE structure and transaction ID. */
-        WT_ERR(__wt_update_alloc(session, value, &upd, &upd_size, modify_type));
+        WT_ERR(__wt_update_alloc(session, value, &upd, &upd_size, modify_type, 0xc01));
         WT_ERR(__wt_txn_modify(session, upd));
         logged = true;
 
@@ -178,7 +178,7 @@ __wt_col_modify(WT_SESSION_IMPL *session, WT_CURSOR_BTREE *cbt, uint64_t recno,
             (recno != WT_RECNO_OOB && mod->mod_col_split_recno > recno));
 
         if (upd_arg == NULL) {
-            WT_ERR(__wt_update_alloc(session, value, &upd, &upd_size, modify_type));
+            WT_ERR(__wt_update_alloc(session, value, &upd, &upd_size, modify_type, 0xc02));
             WT_ERR(__wt_txn_modify(session, upd));
             logged = true;
 
diff --git a/src/btree/row_modify.c b/src/btree/row_modify.c
index 7298dee..58b2f90 100644
--- a/src/btree/row_modify.c
+++ b/src/btree/row_modify.c
@@ -91,7 +91,7 @@ __wt_row_modify(WT_SESSION_IMPL *session, WT_CURSOR_BTREE *cbt, const WT_ITEM *k
             WT_ERR(__wt_txn_update_check(session, old_upd = *upd_entry));
 
             /* Allocate a WT_UPDATE structure and transaction ID. */
-            WT_ERR(__wt_update_alloc(session, value, &upd, &upd_size, modify_type));
+            WT_ERR(__wt_update_alloc(session, value, &upd, &upd_size, modify_type, 0xadd01));
             WT_ERR(__wt_txn_modify(session, upd));
             logged = true;
 
@@ -154,7 +154,7 @@ __wt_row_modify(WT_SESSION_IMPL *session, WT_CURSOR_BTREE *cbt, const WT_ITEM *k
         cbt->ins = ins;
 
         if (upd_arg == NULL) {
-            WT_ERR(__wt_update_alloc(session, value, &upd, &upd_size, modify_type));
+            WT_ERR(__wt_update_alloc(session, value, &upd, &upd_size, modify_type, 0xadd02));
             WT_ERR(__wt_txn_modify(session, upd));
             logged = true;
 
@@ -251,7 +251,7 @@ __wt_row_insert_alloc(WT_SESSION_IMPL *session, const WT_ITEM *key, u_int skipde
  */
 int
 __wt_update_alloc(WT_SESSION_IMPL *session, const WT_ITEM *value, WT_UPDATE **updp, size_t *sizep,
-  u_int modify_type)
+  u_int modify_type, uint32_t alloc_id)
 {
     WT_UPDATE *upd;
 
@@ -277,6 +277,7 @@ __wt_update_alloc(WT_SESSION_IMPL *session, const WT_ITEM *value, WT_UPDATE **up
         }
     }
     upd->type = (uint8_t)modify_type;
+    upd->alloc_id = alloc_id;
 
     *updp = upd;
     *sizep = WT_UPDATE_MEMSIZE(upd);
diff --git a/src/cache/cache_las.c b/src/cache/cache_las.c
index e1edcb5..3a8d1e7 100644
--- a/src/cache/cache_las.c
+++ b/src/cache/cache_las.c
@@ -747,11 +747,19 @@ __wt_las_insert_block(
               (upd->type == WT_UPDATE_STANDARD || upd->type == WT_UPDATE_MODIFY)) {
                 las_value.size = 0;
                 WT_ASSERT(session, upd != first_upd || multi->page_las.skew_newest);
+                __wt_errx(session,
+                  "LAS_INS: birthmark txn id %" PRIu64 " start_ts %" PRIu64 " size %d", upd->txnid,
+                  upd->start_ts, (int)upd->size);
                 cursor->set_value(cursor, upd->txnid, upd->start_ts, upd->durable_ts,
                   upd->prepare_state, WT_UPDATE_BIRTHMARK, &las_value);
-            } else
+            } else {
+                if (upd->size == 0 && upd->txnid != WT_TXN_NONE)
+                    __wt_errx(session,
+                      "LAS_INS: ZERO txn id %" PRIu64 " start_ts %" PRIu64 " type %d", upd->txnid,
+                      upd->start_ts, (int)upd->type);
                 cursor->set_value(cursor, upd->txnid, upd->start_ts, upd->durable_ts,
                   upd->prepare_state, upd->type, &las_value);
+            }
 
             /*
              * Using update looks a little strange because the keys are guaranteed to not exist, but
diff --git a/src/include/btmem.h b/src/include/btmem.h
index 68d6f53..41ca700 100644
--- a/src/include/btmem.h
+++ b/src/include/btmem.h
@@ -1069,14 +1069,16 @@ struct __wt_ikey {
  *	formed into a forward-linked list.
  */
 struct __wt_update {
-    volatile uint64_t txnid; /* transaction ID */
+    volatile uint64_t txnid;      /* transaction ID */
+    volatile uint64_t orig_txnid; /* transaction ID */
 
     wt_timestamp_t durable_ts; /* timestamps */
     wt_timestamp_t start_ts;
 
     WT_UPDATE *next; /* forward-linked list */
 
-    uint32_t size; /* data length */
+    uint32_t size;     /* data length */
+    uint32_t alloc_id; /* allocation location */
 
 #define WT_UPDATE_INVALID 0   /* diagnostic check */
 #define WT_UPDATE_BIRTHMARK 1 /* transaction for on-page value */
@@ -1107,7 +1109,11 @@ struct __wt_update {
  * WT_UPDATE_SIZE is the expected structure size excluding the payload data -- we verify the build
  * to ensure the compiler hasn't inserted padding.
  */
+#if 0
 #define WT_UPDATE_SIZE 38
+#else
+#define WT_UPDATE_SIZE 50
+#endif
 
 /*
  * The memory size of an update: include some padding because this is such a common case that
diff --git a/src/include/extern.h b/src/include/extern.h
index f069e68..fc5ad9a 100644
--- a/src/include/extern.h
+++ b/src/include/extern.h
@@ -574,6 +574,8 @@ extern int __wt_debug_addr(WT_SESSION_IMPL *session, const uint8_t *addr, size_t
   const char *ofile) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
 extern int __wt_debug_addr_print(WT_SESSION_IMPL *session, const uint8_t *addr, size_t addr_size)
   WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
+extern int __wt_debug_cursor_las(void *cursor_arg, const char *ofile) WT_GCC_FUNC_DECL_ATTRIBUTE(
+  (visibility("default"))) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
 extern int __wt_debug_cursor_page(void *cursor_arg, const char *ofile) WT_GCC_FUNC_DECL_ATTRIBUTE(
   (visibility("default"))) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
 extern int __wt_debug_disk(WT_SESSION_IMPL *session, const WT_PAGE_HEADER *dsk, const char *ofile)
@@ -1482,7 +1484,8 @@ extern int __wt_unexpected_object_type(
   WT_SESSION_IMPL *session, const char *uri, const char *expect) WT_GCC_FUNC_DECL_ATTRIBUTE((cold))
   WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
 extern int __wt_update_alloc(WT_SESSION_IMPL *session, const WT_ITEM *value, WT_UPDATE **updp,
-  size_t *sizep, u_int modify_type) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
+  size_t *sizep, u_int modify_type, uint32_t alloc_id)
+  WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
 extern int __wt_upgrade(WT_SESSION_IMPL *session, const char *cfg[])
   WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
 extern int __wt_value_return(WT_SESSION_IMPL *session, WT_CURSOR_BTREE *cbt, WT_UPDATE *upd)
diff --git a/src/include/txn.i b/src/include/txn.i
index 3e5d2bf..87fc4ed 100644
--- a/src/include/txn.i
+++ b/src/include/txn.i
@@ -213,6 +213,7 @@ __wt_txn_resolve_prepared_op(
         ++(*resolved_update_countp);
 
         if (!commit) {
+            upd->orig_txnid = upd->txnid;
             upd->txnid = WT_TXN_ABORTED;
             continue;
         }
diff --git a/src/reconcile/rec_row.c b/src/reconcile/rec_row.c
index 733f450..fe2d6cc 100644
--- a/src/reconcile/rec_row.c
+++ b/src/reconcile/rec_row.c
@@ -518,16 +518,30 @@ static bool
 __rec_row_zero_len(WT_SESSION_IMPL *session, wt_timestamp_t start_ts, uint64_t start_txn,
   wt_timestamp_t stop_ts, uint64_t stop_txn)
 {
+    bool vis;
+
     /* Before timestamps were stored on pages, it was always possible. */
     if (!__wt_process.page_version_ts)
         return (true);
 
-    /*
-     * The item must be globally visible because we're not writing anything on the page.
-     */
+/*
+ * The item must be globally visible because we're not writing anything on the page.
+ */
+#if 0
+    return ((stop_ts == WT_TS_MAX && stop_txn == WT_TXN_MAX) &&
+      ((start_ts == WT_TS_NONE && start_txn == WT_TXN_NONE) || vis));
+#else
+    if (stop_ts == WT_TS_MAX && stop_txn == WT_TXN_MAX) {
+        if (!(start_ts == WT_TS_NONE && start_txn == WT_TXN_NONE)) {
+            vis = __wt_txn_visible_all(session, start_txn, start_ts);
+            __wt_errx(session, "ZERO: start_txn %" PRIu64 " start_ts %" PRIu64 " vis %d", start_txn,
+              (uint64_t)start_ts, vis);
+        }
+    }
     return ((stop_ts == WT_TS_MAX && stop_txn == WT_TXN_MAX) &&
       ((start_ts == WT_TS_NONE && start_txn == WT_TXN_NONE) ||
               __wt_txn_visible_all(session, start_txn, start_ts)));
+#endif
 }
 
 /*
diff --git a/src/reconcile/rec_visibility.c b/src/reconcile/rec_visibility.c
index 9f3150d..5f9199b 100644
--- a/src/reconcile/rec_visibility.c
+++ b/src/reconcile/rec_visibility.c
@@ -66,11 +66,11 @@ __rec_append_orig_value(
     append = NULL; /* -Wconditional-uninitialized */
     size = 0;      /* -Wconditional-uninitialized */
     if (unpack == NULL || unpack->type == WT_CELL_DEL)
-        WT_RET(__wt_update_alloc(session, NULL, &append, &size, WT_UPDATE_TOMBSTONE));
+        WT_RET(__wt_update_alloc(session, NULL, &append, &size, WT_UPDATE_TOMBSTONE, 0xec01));
     else {
         WT_RET(__wt_scr_alloc(session, 0, &tmp));
         WT_ERR(__wt_page_cell_data_ref(session, page, unpack, tmp));
-        WT_ERR(__wt_update_alloc(session, tmp, &append, &size, WT_UPDATE_STANDARD));
+        WT_ERR(__wt_update_alloc(session, tmp, &append, &size, WT_UPDATE_STANDARD, 0xec02));
     }
 
     /*
@@ -94,6 +94,7 @@ __rec_append_orig_value(
 
     if (upd->type == WT_UPDATE_BIRTHMARK) {
         upd->type = WT_UPDATE_STANDARD;
+        upd->orig_txnid = upd->txnid;
         upd->txnid = WT_TXN_ABORTED;
     }
 
diff --git a/src/txn/txn.c b/src/txn/txn.c
index 0374732..504c667 100644
--- a/src/txn/txn.c
+++ b/src/txn/txn.c
@@ -921,6 +921,7 @@ __wt_txn_commit(WT_SESSION_IMPL *session, const char *cfg[])
                  * Switch reserved operations to abort to simplify obsolete update list truncation.
                  */
                 if (upd->type == WT_UPDATE_RESERVE) {
+                    upd->orig_txnid = upd->txnid;
                     upd->txnid = WT_TXN_ABORTED;
                     break;
                 }
@@ -1110,6 +1111,7 @@ __wt_txn_prepare(WT_SESSION_IMPL *session, const char *cfg[])
              * again: it can be evicted.
              */
             if (upd->type == WT_UPDATE_RESERVE) {
+                upd->orig_txnid = upd->txnid;
                 upd->txnid = WT_TXN_ABORTED;
                 __wt_txn_op_free(session, op);
                 break;
@@ -1239,6 +1241,7 @@ __wt_txn_rollback(WT_SESSION_IMPL *session, const char *cfg[])
                 WT_ASSERT(session, resolved_update_count >= visited_update_count);
             } else {
                 WT_ASSERT(session, upd->txnid == txn->id || upd->txnid == WT_TXN_ABORTED);
+                upd->orig_txnid = upd->txnid;
                 upd->txnid = WT_TXN_ABORTED;
             }
             break;
diff --git a/src/txn/txn_rollback_to_stable.c b/src/txn/txn_rollback_to_stable.c
index 97c83c4..f16eec4 100644
--- a/src/txn/txn_rollback_to_stable.c
+++ b/src/txn/txn_rollback_to_stable.c
@@ -117,6 +117,7 @@ __txn_abort_newer_update(
                 upd == first_upd);
             first_upd = upd->next;
 
+            upd->orig_txnid = upd->txnid;
             upd->txnid = WT_TXN_ABORTED;
             WT_STAT_CONN_INCR(session, txn_rollback_upd_aborted);
             upd->durable_ts = upd->start_ts = WT_TS_NONE;
diff --git a/test/format/format.h b/test/format/format.h
index e90bbf8..7305082 100644
--- a/test/format/format.h
+++ b/test/format/format.h
@@ -63,6 +63,7 @@ typedef struct {
     char *home_backup_init;  /* Initialize backup command */
     char *home_config;       /* Run CONFIG file path */
     char *home_init;         /* Initialize home command */
+    char *home_lasdump;      /* LAS dump filename */
     char *home_log;          /* Operation log file path */
     char *home_pagedump;     /* Page dump filename */
     char *home_rand;         /* RNG log file path */
@@ -352,7 +353,7 @@ void snap_init(TINFO *, uint64_t, bool);
 void snap_repeat_single(WT_CURSOR *, TINFO *);
 int snap_repeat_txn(WT_CURSOR *, TINFO *);
 void snap_repeat_update(TINFO *, bool);
-void snap_track(TINFO *, thread_op);
+void snap_track(WT_CURSOR *, TINFO *, thread_op);
 WT_THREAD_RET timestamp(void *);
 void track(const char *, uint64_t, TINFO *);
 void val_gen(WT_RAND_STATE *, WT_ITEM *, uint64_t);
diff --git a/test/format/ops.c b/test/format/ops.c
index a03b42e..ddb296d 100644
--- a/test/format/ops.c
+++ b/test/format/ops.c
@@ -521,7 +521,7 @@ prepare_transaction(TINFO *tinfo)
 #define SNAP_TRACK(tinfo, op)                                          \
     do {                                                               \
         if (intxn && !ckpt_handle && iso_config == ISOLATION_SNAPSHOT) \
-            snap_track(tinfo, op);                                     \
+            snap_track(cursor, tinfo, op);                             \
     } while (0)
 
 /*
@@ -977,6 +977,7 @@ ops(void *arg)
             snap_repeat_update(tinfo, true);
             break;
         case 5: /* 10% */
+        case 6: /* 20% */
 rollback:
             rollback_transaction(tinfo);
             snap_repeat_update(tinfo, false);
diff --git a/test/format/snap.c b/test/format/snap.c
index e68309c..ea2873c 100644
--- a/test/format/snap.c
+++ b/test/format/snap.c
@@ -28,6 +28,7 @@
 
 #include "format.h"
 
+static int snap_verify(WT_CURSOR *cursor, TINFO *tinfo, SNAP_OPS *snap);
 /*
  * snap_init --
  *     Initialize the repeatable operation tracking.
@@ -49,7 +50,7 @@ snap_init(TINFO *tinfo, uint64_t read_ts, bool repeatable_reads)
  *     Add a single snapshot isolation returned value to the list.
  */
 void
-snap_track(TINFO *tinfo, thread_op op)
+snap_track(WT_CURSOR *cursor, TINFO *tinfo, thread_op op)
 {
     WT_ITEM *ip;
     SNAP_OPS *snap;
@@ -81,6 +82,11 @@ snap_track(TINFO *tinfo, thread_op op)
         memcpy(snap->vdata, ip->data, snap->vsize = ip->size);
     }
 
+    if (op == READ) {
+        __wt_yield();
+        snap_verify(cursor, tinfo, snap);
+    }
+
     /* Move to the next slot, wrap at the end of the circular buffer. */
     if (++tinfo->snap >= &tinfo->snap_list[WT_ELEMENTS(tinfo->snap_list)])
         tinfo->snap = tinfo->snap_list;
@@ -195,6 +201,10 @@ snap_verify(WT_CURSOR *cursor, TINFO *tinfo, SNAP_OPS *snap)
 #ifdef HAVE_DIAGNOSTIC
     fprintf(stderr, "snapshot-isolation error: Dumping page to %s\n", g.home_pagedump);
     testutil_check(__wt_debug_cursor_page(cursor, g.home_pagedump));
+    fprintf(stderr, "snapshot-isolation error: Dumping LAS to %s\n", g.home_lasdump);
+    testutil_check(__wt_debug_cursor_las(cursor, g.home_lasdump));
+    if (g.logging)
+        testutil_check(cursor->session->log_flush(cursor->session, "sync=off"));
 #endif
     switch (g.type) {
     case FIX:
diff --git a/test/format/util.c b/test/format/util.c
index 88c5afd..b1bb81d 100644
--- a/test/format/util.c
+++ b/test/format/util.c
@@ -247,7 +247,7 @@ val_gen(WT_RAND_STATE *rnd, WT_ITEM *value, uint64_t keyno)
      * WiredTiger doesn't store zero-length data items in row-store files, test that by inserting a
      * zero-length data item every so often.
      */
-    if (keyno % 63 == 0) {
+    if (keyno % 5 == 0) {
         p[0] = '\0';
         value->size = 0;
         return;
@@ -330,6 +330,11 @@ path_setup(const char *home)
     g.home_log = dmalloc(len);
     testutil_check(__wt_snprintf(g.home_log, len, "%s/%s", g.home, "log"));
 
+    /* LAS dump file. */
+    len = strlen(g.home) + strlen("LASdump") + 2;
+    g.home_lasdump = dmalloc(len);
+    testutil_check(__wt_snprintf(g.home_lasdump, len, "%s/%s", g.home, "LASdump"));
+
     /* Page dump file. */
     len = strlen(g.home) + strlen("pagedump") + 2;
     g.home_pagedump = dmalloc(len);
