Fix intermittent failures in the LeakTracer on 5.18+, remove all workarounds
authorPeter Rabbitson <ribasushi@cpan.org>
Thu, 22 Jan 2015 22:27:22 +0000 (23:27 +0100)
committerPeter Rabbitson <ribasushi@cpan.org>
Fri, 17 Jun 2016 00:25:05 +0000 (02:25 +0200)
commit8428e0b6d206d21201046fe454902fcaaa16fe64
treecec35c843c1abae3e66690396585128c00e1f922
parent0d862c5c125b52e27ecd71111f7202d1dd9e176e
Fix intermittent failures in the LeakTracer on 5.18+, remove all workarounds

( cherry-pick of 1a77219a )

ARGH! In the end the issue turned out to be stupid-simple: when PadWalker is
called it always returns us a hashref. This hashref is traversed, with its
own address recorded as seen. Once processed, the hashref itself is GCed,
leaving a stale entry in $seen_refs.

Up until 5.18 this was not a problem, likely due to no address reuse. However
after 5.18 PadWalker is very happy to return different hashrefs under the same
address over and over again. The $seen_refs entry leads to a skip, and the
actual contents of the pad are never examined - we've seen this hash already.

ARGH!

The decisive change is the single line around PadWalker - everything else is
cleanup of workarounds for this problem.

Conflicts:
Changes
Changes
t/52leaks.t
t/lib/DBICTest/Util/LeakTracer.pm