I’m running builds of 8.0 to make sure we don’t have any major test failures, and I’ve run into a few problems so far. I’ll put them in separate emails so they are more manageable. If anyone can offer any assistance, that would be most appreciated. I can supply any info needed, up to getting you a logon to the systems in question.

Next up are a series of Critbit failures on a current version of illumos:

uname -a
SunOS centaur 5.11 joyent_20201023T231824Z i86pc i386 i86pc Solaris

...

Doing tests in post_modules/CritBit/testsuite (856 tests, pid 72180)
/home/hww3/Pike-v8.0.1094/src/post_modules/CritBit/testsuite.in:203: Test 725 (shift 2) (CRNL) failed.
  1: mixed a() { return GET_TREE(); }
  2: mixed b() { return GET_TREE()->get_subtree(); }
  3: 

o->a(): THE_TREE
o->b(): ADT._CritBit.BigNumTree()
/home/hww3/Pike-v8.0.1094/src/post_modules/CritBit/testsuite.in:203: Test 727 (shift 1) failed.
  1: mixed a() { return GET_TREE(); }
  2: mixed b() { return GET_TREE()->copy(); }
  3: 

o->a(): THE_TREE
o->b(): ADT._CritBit.BigNumTree()
/home/hww3/Pike-v8.0.1094/src/post_modules/CritBit/testsuite.in:203: Test 729 (shift 0) (CRNL) failed.
  1: mixed a() { return ADT.CritBit.BigNumTree()+GET_TREE(); }
  2: mixed b() { return GET_TREE(); }
  3: 

o->a(): ADT._CritBit.BigNumTree()
o->b(): THE_TREE
/home/hww3/Pike-v8.0.1094/src/post_modules/CritBit/testsuite.in:203: Test 731 (shift 2) (CRNL) failed.
  1: mixed a() { return GET_TREE()+GET_TREE(); }
  2: mixed b() { return GET_TREE(); }
  3: 

o->a(): ADT._CritBit.BigNumTree()
o->b(): THE_TREE
/home/hww3/Pike-v8.0.1094/src/post_modules/CritBit/testsuite.in:203: Test 733 (shift 1) failed.
  1: mixed a() { return GET_TREE()+ADT.CritBit.BigNumTree(); }
  2: mixed b() { return GET_TREE(); }
  3: 

o->a(): ADT._CritBit.BigNumTree()
o->b(): THE_TREE
/home/hww3/Pike-v8.0.1094/src/post_modules/CritBit/testsuite.in:203: Test 737 (shift 2) (CRNL) failed.
  1: mixed a() { return GET_TREE()-ADT.CritBit.BigNumTree(); }
  2: mixed b() { return GET_TREE(); }
  3: 

o->a(): ADT._CritBit.BigNumTree()
o->b(): THE_TREE
/home/hww3/Pike-v8.0.1094/src/post_modules/CritBit/testsuite.in:203: Test 739 (shift 1) failed:
Value mismatch: (3919933115663279717976 : 212) vs (3919933115663279717976 : 0)
post_modules/CritBit/testsuite:10: testsuite()->a()
test-install/pike/8.0.1094/lib/modules/Tools.pmod/Standalone.pmod/test_pike.pike:1109:
    /main()->main(4,({"/home/hww3/Pike-v8.0.1094/build/sunos-5.11-i86pc/test-install/pike/8.0.1094/lib/modules/Tools.pmod/Standalone.pmod/test_pike.pike",0,0,"post_modules/CritBit/testsuite"}))

  1: mixed a() { 
  2:    mapping m = GET_SAMPLE();
  3:    object tree = GET_TREE();
  4:    function sortfun = GET_SORTFUN();
  5:    array a = GET_SORTED_A();
  6: 
  7:    
  8:        foreach (GET_SAMPLE(); mixed a; mixed b) {
  9:            if (b != GET_TREE()[a])
 10:                error("Value mismatch: (%O : %O) vs (%O : %O)\n", a, b, a, GET_TREE()[a]);
 11:        }
 12:    
 13:    return 1;
 14:     ; }
 15: mixed b() { return 1; }
 16: 

/home/hww3/Pike-v8.0.1094/src/post_modules/CritBit/testsuite.in:203: Test 742 (shift 1) (CRNL) failed:
next(27670116110564327422) == 183517433417299474231880 should be 46116860184273879036
post_modules/CritBit/testsuite:15: testsuite()->a()
test-install/pike/8.0.1094/lib/modules/Tools.pmod/Standalone.pmod/test_pike.pike:1109:
    /main()->main(4,({"/home/hww3/Pike-v8.0.1094/build/sunos-5.11-i86pc/test-install/pike/8.0.1094/lib/modules/Tools.pmod/Standalone.pmod/test_pike.pike",0,0,"post_modules/CritBit/testsuite"}))

  1: mixed a() { 
  2:    mapping m = GET_SAMPLE();
  3:    object tree = GET_TREE();
  4:    function sortfun = GET_SORTFUN();
  5:    array a = GET_SORTED_A();
  6: 
  7:    
  8:             tree = tree->copy();
  9:             int i;
 10: 
 11:             for (i = 1; i < sizeof(a); i += 2) m_delete(tree, a[i]);
 12: 
 13:             for (i = 1; i+1 < sizeof(a); i += 2) {
 14:                 if (tree->next(a[i]) != a[i+1])
 15:                     error("next(%O) == %O should be %O\n", a[i], tree->next(a[i]), a[i+1]);
 16:                 if (tree->previous(a[i]) != a[i-1])
 17:                     error("previous(%O) == %O should be %O\n", a[i], tree->previous(a[i]), a[i-1]);
 18:             }
 19:         
 20:    return 1;
 21:     ; }
 22: mixed b() { return 1; }
 23: 

/home/hww3/Pike-v8.0.1094/src/post_modules/CritBit/testsuite.in:203: Test 743 (shift 2) (CRNL) failed:
Key mismatch in range iterate(): (0 : 138350580552821637106) vs (0 : 9223372036854775808)
post_modules/CritBit/testsuite:11: testsuite()->a()
test-install/pike/8.0.1094/lib/modules/Tools.pmod/Standalone.pmod/test_pike.pike:1109:
    /main()->main(4,({"/home/hww3/Pike-v8.0.1094/build/sunos-5.11-i86pc/test-install/pike/8.0.1094/lib/modules/Tools.pmod/Standalone.pmod/test_pike.pike",0,0,"post_modules/CritBit/testsuite"}))

  1: mixed a() { 
  2:    mapping m = GET_SAMPLE();
  3:    object tree = GET_TREE();
  4:    function sortfun = GET_SORTFUN();
  5:    array a = GET_SORTED_A();
  6: 
  7:    
  8:        mixed t = GET_TREE()->first();
  9:        foreach (GET_SORTED_A(); int i; mixed key) {
 10:            if (t != key)
 11:                error("Key mismatch in range iterate(): (%O : %O) vs (%O : %O)\n", i, t, i, key);
 12:            t = GET_TREE()->next(t);
 13:            if (GET_SAMPLE()[key] != GET_TREE()[key])
 14:                error("Value mismatch in order: (%O : %O) vs (%O : %O)\n", key, GET_SAMPLE()[key], key, GET_TREE()[key]);
 15:            mixed nth = GET_TREE()->nth(i)[0];
 16:            if (nth != key)
 17:                error("Value mismatch in nth(): (%O : %O) vs (%O : %O)\n", i, key, i, nth);
 18:        }
 19: 
 20:    
 21:    return 1;
 22:     ; }
 23: mixed b() { return 1; }
 24: 

/home/hww3/Pike-v8.0.1094/src/post_modules/CritBit/testsuite.in:203: Test 744 (shift 0) failed:
Key mismatch in range iterate(): (0 : 9223372036854775808) vs (0 : 138350580552821637106)
post_modules/CritBit/testsuite:12: testsuite()->test_range_operator(1)
post_modules/CritBit/testsuite:22: testsuite()->a()
test-install/pike/8.0.1094/lib/modules/Tools.pmod/Standalone.pmod/test_pike.pike:1109:
    /main()->main(4,({"/home/hww3/Pike-v8.0.1094/build/sunos-5.11-i86pc/test-install/pike/8.0.1094/lib/modules/Tools.pmod/Standalone.pmod/test_pike.pike",0,0,"post_modules/CritBit/testsuite"}))

  1: mixed a() { 
  2:    mapping m = GET_SAMPLE();
  3:    object tree = GET_TREE();
  4:    function sortfun = GET_SORTFUN();
  5:    array a = GET_SORTED_A();
  6: 
  7:    
  8:        void test_range_operator(int step) {
  9:            int i = (step < 0) ? sizeof(tree)-1 : 0;
 10:            foreach (tree->_get_iterator(step); mixed key; mixed value) {
 11:                if (GET_SORTED_A()[i] != key)
 12:                    error("Key mismatch in range iterate(): (%O : %O) vs (%O : %O)\n", i, GET_SORTED_A()[i], i, key);
 13:                if (GET_SAMPLE()[GET_SORTED_A()[i] ] != value)
 14:                    error("Value mismatch in range iterate(): (%O : %O) vs (%O : %O)\n", i, GET_SAMPLE()[GET_SORTED_A()[i] ], i, value);
 15:                i+=step;
 16:            }
 17: 
 18:            if (step > 0) test_range_operator(-step);
 19:        };
 20: 
 21:        foreach (enumerate(40, 13, 1); ; int n) {
 22:            if (n) test_range_operator(n);
 23:        }
 24:    
 25:    return 1;
 26:     ; }
 27: mixed b() { return 1; }
 28: 

/home/hww3/Pike-v8.0.1094/src/post_modules/CritBit/testsuite.in:203: Test 745 (shift 1) failed:
Key mismatch in range iterate(): (6940 : 128029627243581142976968) vs (6940 : 138350580552821637106)
post_modules/CritBit/testsuite:15: testsuite()->test_range_operator(6940,8743,1597)
post_modules/CritBit/testsuite:42: testsuite()->a()
test-install/pike/8.0.1094/lib/modules/Tools.pmod/Standalone.pmod/test_pike.pike:1109:
    /main()->main(4,({"/home/hww3/Pike-v8.0.1094/build/sunos-5.11-i86pc/test-install/pike/8.0.1094/lib/modules/Tools.pmod/Standalone.pmod/test_pike.pike",0,0,"post_modules/CritBit/testsuite"}))

  1: mixed a() { 
  2:    mapping m = GET_SAMPLE();
  3:    object tree = GET_TREE();
  4:    function sortfun = GET_SORTFUN();
  5:    array a = GET_SORTED_A();
  6: 
  7:    
  8:        void test_range_operator(int start, int stop, int step) {
  9:            int i = start;
 10: 
 11:            if (step == 0) return;
 12: 
 13:            foreach (tree->_get_iterator(step, a[start], a[stop]); mixed key; mixed value) {
 14:                if (GET_SORTED_A()[i] != key)
 15:                    error("Key mismatch in range iterate(): (%O : %O) vs (%O : %O)\n", i, GET_SORTED_A()[i], i, key);
 16:                if (GET_SAMPLE()[GET_SORTED_A()[i] ] != value)
 17:                    error("Value mismatch in range iterate(): (%O : %O) vs (%O : %O)\n", i, GET_SAMPLE()[GET_SORTED_A()[i] ], i, value);
 18:                i+=step;
 19:            }
 20: 
 21: #if constant(ADT.CritBit.Range)
 22:            object r = ADT.CritBit.Range(a[start], a[stop]);
 23:            object rs = ADT.CritBit.RangeSet(object_program(tree));
 24:            rs[r] = 1;
 25:            foreach (a;; mixed key) {
 26:                if (equal(GET_SORTFUN()(({ key, r.b, r.a}))[1], key)) {
 27:                    if (undefinedp(rs[key])) {
 28:                        error("RangeSet error. %O not within [%O,%O]\n", key, r.a, r.b);
 29:                    }
 30:                } else {
 31:                    if (!undefinedp(rs[key])) {
 32:                        error("RangeSet error. %O should not be within [%O,%O]\next: %O\n", key, r.a, r.b, rs->tree->next(key));
 33:                    }
 34:                }
 35:            }
 36: #endif
 37:        };
 38: 
 39:        for (int i = 0; i < 100; i++) {
 40:            int start = random(sizeof(a));
 41:            int stop = start + random(sizeof(a)-start);
 42:            test_range_operator(start, stop, random(stop-start));
 43:        }
 44:    
 45:    return 1;
 46:     ; }
 47: mixed b() { return 1; }
 48: 

/home/hww3/Pike-v8.0.1094/src/post_modules/CritBit/testsuite.in:203: Test 770 (shift 2) failed:
Key mismatch in random delete. 44318302637087197752636 : 2402 vs 0
post_modules/CritBit/testsuite:10: testsuite()->a()
test-install/pike/8.0.1094/lib/modules/Tools.pmod/Standalone.pmod/test_pike.pike:1109:
    /main()->main(4,({"/home/hww3/Pike-v8.0.1094/build/sunos-5.11-i86pc/test-install/pike/8.0.1094/lib/modules/Tools.pmod/Standalone.pmod/test_pike.pike",0,0,"post_modules/CritBit/testsuite"}))

  1: mixed a() { 
  2:    mapping m = GET_SAMPLE();
  3:    object tree = GET_TREE();
  4:    function sortfun = GET_SORTFUN();
  5:    array a = GET_SORTED_A();
  6: 
  7:    
  8:        foreach (tree; mixed key; mixed val) {
  9:            if (val != m[key])
 10:                error("Key mismatch in random delete. %O : %O vs %O\n", key, val, m[key]);
 11:            array t = random(tree);
 12:            m_delete(tree, t[0]);
 13:            m_delete(m, t[0]);
 14:            if (!zero_type(tree[t[0] ])) error("m_delete failed in random delete (key: %O)\n", t[0]);
 15:        }
 16:        if (sizeof(m) != sizeof(tree)) {
 17:            error("Size mismatch after random delete. %O vs %O\n", sizeof(m), sizeof(tree));
 18:        }
 19:    
 20:    return 1;
 21:     ; }
 22: mixed b() { return 1; }
 23: 

Subresult: 856 tests, 12 failed, 0 skipped