Devel--Cover icon indicating copy to clipboard operation
Devel--Cover copied to clipboard

DESTRUCT-time leak detectors cause warnings

Open FGasper opened this issue 3 years ago • 0 comments

#!/usr/bin/perl

use strict;
use warnings;

use Test::More;
use Test::FailWarnings;

{
    my $thing = bless [], 'LeakDetector';
    is( $thing, $thing, 'I am I' );
}

done_testing;

# ----------------------------------------------------------------------

package LeakDetector;

sub DESTROY {
    warn "DESTROY at global destruction!\n" if ${^GLOBAL_PHASE} eq 'DESTRUCT';
}

If you run the above under Devel::Cover we see something like:

> perl -MDevel::Cover ref_bug.t
Devel::Cover 1.36: Collecting coverage data for branch, condition, pod, statement, subroutine and time.
Selecting packages matching:
Ignoring packages matching:
    /Devel/Cover[./]
Ignoring packages in:
    /Users/felipe/perl5/lib/perl5/darwin-thread-multi-2level
    /Users/felipe/perl5/lib/perl5
    /opt/local/lib/perl5/site_perl/5.28/darwin-thread-multi-2level
    /opt/local/lib/perl5/site_perl/5.28
    /opt/local/lib/perl5/vendor_perl/5.28/darwin-thread-multi-2level
    /opt/local/lib/perl5/vendor_perl/5.28
    /opt/local/lib/perl5/5.28/darwin-thread-multi-2level
    /opt/local/lib/perl5/5.28
ok 1 - I am I
1..1
Devel::Cover: Deleting old coverage for changed file ref_bug.t
Devel::Cover: getting BEGIN block coverage
Devel::Cover: 100% - 0s taken
Devel::Cover: getting CHECK block coverage
Devel::Cover: 100% - 0s taken
Devel::Cover: getting END/INIT block coverage
Devel::Cover: 100% - 0s taken
Devel::Cover: getting CV coverage
Devel::Cover: 100% - 0s taken
Devel::Cover: Writing coverage database to /Users/felipe/code/Devel--Cover/cover_db/runs/1654521279.80674.37036
--------- ------ ------ ------ ------ ------ ------ ------
File        stmt   bran   cond    sub    pod   time  total
--------- ------ ------ ------ ------ ------ ------ ------
ref_bug.t   94.4    0.0    n/a   80.0    n/a  100.0   84.0
Total       94.4    0.0    n/a   80.0    n/a  100.0   84.0
--------- ------ ------ ------ ------ ------ ------ ------


Use of uninitialized value $hid in hash element at /Users/felipe/perl5/lib/perl5/Test2/API.pm line 396 during global destruction.
Use of uninitialized value $hid in hash element at /Users/felipe/perl5/lib/perl5/Test2/API.pm line 492 during global destruction.
Use of uninitialized value $hid in hash element at /Users/felipe/perl5/lib/perl5/Test2/API.pm line 493 during global destruction.
Use of uninitialized value in array element at /Users/felipe/perl5/lib/perl5/Test/Builder.pm line 706 during global destruction.
	(in cleanup) 	(in cleanup)  at /Users/felipe/perl5/lib/perl5/Test/Builder.pm line 729 during global destruction.
	(in cleanup) 	(in cleanup)  at /Users/felipe/perl5/lib/perl5/Test2/API/Context.pm line 73 during global destruction.

FGasper avatar Jun 06 '22 14:06 FGasper