diff --git a/newbrt/tests/sort-test.c b/newbrt/tests/sort-test.c
index bf59aa7735b426f5a4327a68bc5cbfdfefbfa2f4..84faade2383c79b061af5440f8b970d20248be5b 100644
--- a/newbrt/tests/sort-test.c
+++ b/newbrt/tests/sort-test.c
@@ -11,16 +11,21 @@
 const int MAX_NUM = 0x0fffffffL;
 int MAGIC_EXTRA = 0xd3adb00f;
 
+static int
+int_qsort_cmp(const void *va, const void *vb) {
+    const int *a = va, *b = vb;
+    assert(*a < MAX_NUM);
+    assert(*b < MAX_NUM);
+    return (*a > *b) - (*a < *b);
+}
+
 static int
 int_cmp(void *ve, const void *va, const void *vb)
 {
     int *e = ve;
     assert(e);
     assert(*e == MAGIC_EXTRA);
-    const int *a = va, *b = vb;
-    assert(*a < MAX_NUM);
-    assert(*b < MAX_NUM);
-    return (*a > *b) - (*a < *b);
+    return int_qsort_cmp(va, vb);
 }
 
 static void
@@ -67,12 +72,50 @@ static void
 random_array_test(int nelts)
 {
     int *MALLOC_N(nelts, a);
+    int *MALLOC_N(nelts, b);
     for (int i = 0; i < nelts; ++i) {
         a[i] = rand() % MAX_NUM;
+        b[i] = a[i];
     }
     mergesort_r(a, nelts, sizeof a[0], &MAGIC_EXTRA, int_cmp);
     check_int_array(a, nelts);
+    qsort(b, nelts, sizeof b[0], int_qsort_cmp);
+    for (int i = 0; i < nelts; ++i)
+        assert(a[i] == b[i]);
+    toku_free(a);
+    toku_free(b);
+}
+
+static int
+uint64_qsort_cmp(const void *va, const void *vb) {
+    const uint64_t *a = va, *b = vb;
+    return (*a > *b) - (*a < *b);
+}
+
+static int
+uint64_cmp(void *ve, const void *va, const void *vb)
+{
+    int *e = ve;
+    assert(e);
+    assert(*e == MAGIC_EXTRA);
+    return uint64_qsort_cmp(va, vb);
+}
+
+static void
+random_array_test_64(int nelts)
+{
+    uint64_t *MALLOC_N(nelts, a);
+    uint64_t *MALLOC_N(nelts, b);
+    for (int i = 0; i < nelts; ++i) {
+        a[i] = ((uint64_t)rand() << 32ULL) | rand();
+        b[i] = a[i];
+    }
+    mergesort_r(a, nelts, sizeof a[0], &MAGIC_EXTRA, uint64_cmp);
+    qsort(b, nelts, sizeof b[0], uint64_qsort_cmp);
+    for (int i = 0; i < nelts; ++i)
+        assert(a[i] == b[i]);
     toku_free(a);
+    toku_free(b);
 }
 
 int
@@ -83,6 +126,7 @@ test_main(int argc __attribute__((__unused__)), const char *argv[] __attribute__
     random_array_test(1000);
     random_array_test(10001);
     random_array_test(10000000);
+    random_array_test_64(10000000);
     dup_array_test(10);
     dup_array_test(1000);
     dup_array_test(10001);
diff --git a/newbrt/tests/test.h b/newbrt/tests/test.h
index c6b629c22c15c89a37f9037ea75787354bcc9930..e7f66771b58bdad56be84911ce19b7841b819af2 100644
--- a/newbrt/tests/test.h
+++ b/newbrt/tests/test.h
@@ -162,6 +162,7 @@ static UU() BOOL def_pf_req_callback(void* UU(brtnode_pv), void* UU(read_extraar
 
 static UU() int def_pf_callback(void* UU(brtnode_pv), void* UU(read_extraargs), int UU(fd), PAIR_ATTR* UU(sizep)) {
   assert(FALSE);
+  return 0;
 }
 
 static UU() int