The -R option of regrtest replaces sys.stdout with a io.StringIO object. Problem: the refleak are hunted after stdout is replaced, and so each print() increaes the total reference counter which is seen as a leak.
Example:
$ cat Lib/test/test_noop.py
"noop"
$ ./python -u -m test -R 3:3 -W test_noop
Run tests sequentially
0:00:00 [1/1] test_noop
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
beginning 6 repetitions
123456
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
.
(...)
test_noop leaked [9, 9, 9] references, sum=27
test_noop failed
1 test failed:
test_noop
Total duration: 0:00:01 |