I know the title says spurious, but is there a way to reproduce this at all? Can I run a certain suite N times or something? How did you find the problem?
I'm attaching a test case. You're right, in test_buffer it's hard to reproduce but I've encountered the "leak" several times in the past months. Today I realized that the "leak" always occurred with format code 'c'. There's this passage in test_buffer: x = randrange(*fmtdict[mode][char]) if char == 'c': x = bytes(chr(x), 'latin1') After some head scratching I looked into regrtest.py and found the warm_char_cache() function. The whole thing makes sense: In each repetition of the refleak mode new characters can be added to the unicode_latin1 cache. So, you should be able to reproduce the issue: $ ./python -m test -uall -R 2:2 test_pseudo_leak [1/1] test_pseudo_leak beginning 4 repetitions 1234 .... test_pseudo_leak leaked [8, 8] references, sum=16 1 test failed: test_pseudo_leak [151225 refs]
Should we go all the way and also explicitly fill the small int cache? Integers 0-255 should be initialized already, but I'm not sure about [-5..-1] and 256. I haven't been able to create a test case for integers though.