in reply to Attempt to free unreferenced scalar in File::Copy (ActivePerl)

This code demonstrates the bug:
use strict; use warnings; use DBI; use File::Copy qw(copy); my $dsn = 'DBI:ODBC:somedb'; my $db_user = ''; my $db_pass = ''; my $dbh = DBI->connect($dsn,$db_user,$db_pass ) or die $DBI::errstr; if (1) { # This causes the warning my $loh = $dbh->selectall_hashref('select 1 as a, 2 as b','a'); } if (0) { # This causes the warning my $sth = $dbh->prepare('select 1 as a, 2 as b'); $sth->execute(); my $loh = $sth->fetchall_hashref('a'); $sth->finish; } if (0) { # This does not cause the warning my $aoa = $dbh->selectall_arrayref('select 1 as a, 2 as b'); } if (0) { # This does not cause the warning my $sth = $dbh->prepare('select 1 as a, 2 as b'); $sth->execute(); my $hash = $sth->fetchrow_hashref(); $sth->finish; } copy('a','b') or die "Failed to copy a to b. $!\n"; $dbh->disconnect;
Note that the error only occurs when selectall_hashref or fetchall_hashref are called, and none of the others.

Run with the following versions:

* activestate perl 5.8.8
* Win32 0.2601
* DBI 1.50
* File::Copy 2.09

  • Comment on Re: Attempt to free unreferenced scalar in File::Copy (ActivePerl)
  • Download Code

Replies are listed 'Best First'.
Re^2: Attempt to free unreferenced scalar in File::Copy (ActivePerl)
by EvanK (Chaplain) on Aug 16, 2006 at 14:40 UTC
    ++imp, it is DBI! more specifically, its the combination of DBI and File::Copy. And it doesnt reproduce on my debian or gentoo servers either, so, I'd assume its activestate specific.

    __________
    Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.
    - Terry Pratchett

      Are you using DBD::ODBC or a different driver?

      I'm still investigating the issue but it's slow going as I learn more about perl internals.

        No, I'm using DBD::mysql with a MySQL 5 database.

        __________
        Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.
        - Terry Pratchett