Don't ever report a failure when the sum of the reference count differences
are zero. This should help reduce the false positives.
The message about references leaking is maintained to provide as much
info as possible rather than simply suppressing the message at the source.
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index ce5f2f6..0045151 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -682,9 +682,10 @@
deltas.append(sys.gettotalrefcount() - rc - 2)
print >> sys.stderr
if any(deltas):
- print >> sys.stderr, test, 'leaked', deltas, 'references'
+ msg = '%s leaked %s references, sum=%s' % (test, deltas, sum(deltas))
+ print >> sys.stderr, msg
refrep = open(fname, "a")
- print >> refrep, test, 'leaked', deltas, 'references'
+ print >> refrep, msg
refrep.close()
def dash_R_cleanup(fs, ps, pic):
diff --git a/Misc/build.sh b/Misc/build.sh
index b153fd5..94950ff 100755
--- a/Misc/build.sh
+++ b/Misc/build.sh
@@ -192,7 +192,7 @@
## ensure that the reflog exists so the grep doesn't fail
touch $REFLOG
$PYTHON $REGRTEST_ARGS -R 4:3:$REFLOG -u network $LEAKY_SKIPS >& build/$F
- NUM_FAILURES=`egrep -vc "$LEAKY_TESTS" $REFLOG`
+ NUM_FAILURES=`egrep -vc "($LEAKY_TESTS|sum=0)" $REFLOG`
update_status "Testing refleaks ($NUM_FAILURES failures)" "$F" $start
mail_on_failure "refleak" $REFLOG