panic: DESTROY (dbih_clearcom) in trace output
am 07.06.2007 21:53:56 von Martin.EvansHi,
I am trying to debug a rather nasty problem using DBD::Oracle and
enabled tracing with DBI_TRACE=10=x.x. As soon as I did this I get the
following on stderr. Unfortunately, the code is doing quite a bit at
this point (see below). As you will see I am using DBIx::Log4perl so I'm
quite prepared to believe the issue is there but I'm not sure what the
issue is.
SV = PVHV(0x8eb2ba0) at 0x8ebe35c
REFCNT = 0
FLAGS = (RMG,SHAREKEYS)
IV = 12
NV = 0
MAGIC = 0x8eb5be8
MG_VIRTUAL = 0
MG_TYPE = PERL_MAGIC_ext(~)
MG_FLAGS = 0x02
REFCOUNTED
MG_OBJ = 0x8ebe788
SV = PVMG(0x8de4280) at 0x8ebe788
REFCNT = 1
FLAGS = (OBJECT)
IV = 0
NV = 0
PV = 0x8ec5710 ""
CUR = 0
LEN = 220
STASH = 0x8e11fdc "DBD::Oracle::st_mem"
STASH = 0x83b3378 "DBIx::Log4perl::st"
ARRAY = 0x8eb5c28 (0:9, 1:4, 2:1, 3:2)
hash quality = 77.9%
KEYS = 12
FILL = 7
MAX = 15
RITER = -1
EITER = 0x0
(in cleanup) panic: DESTROY (dbih_clearcom) inner handle HASH is
not a h
ash ref at /usr/lib/perl5/site_perl/5.8.8/DBIx/Log4perl/db.pm line 55.
Line 55 in db.pm is the last line below:
sub do {
my ($dbh, @args) = @_;
my $h = $dbh->{private_DBIx_Log4perl};
$h->{Statement} = $args[0];
$dbh->_dbix_l4p_debug('do', @args)
if ($h->{logmask} & DBIX_L4P_LOG_INPUT);
my $affected = $dbh->SUPER::do(@args);
As far as I can see the code is doing one of the following dos:
do 'insert into xxx.job_audit (job_id, client_reference,
queued_date_time_utc, arguments, job_repost) values(?,?,utc_timestamp(),
substr(?, 0, 4000), ?)',undef, '450281',undef,' $VAR1 = {\'priority\' =>
1,\'jobid\' => \'450281\',\'args\' => {
},\'name\' => \'market_actions\',\'type\' => \'local\',\'jobflags\' =>
\'1\'};',undef];
affected: 1
do 'update xxx.job_audit set started_date_time_utc = utc_timestamp()
where job_id = ?',undef,'450281'];
affected: 1
do 'update xxx.job_audit set finished_date_time_utc = utc_timestamp(),
completion_status = ?, error_string = substr(?, 0, 500), job_repost =
(case when client_reference is null then null else ? end) where job_id
= ? -- run_queue',undef,0,undef,0,'450281'];
affected: 1
I can find in the following in dbih_inner
/* extra checks if being paranoid */
if (DBIS->debug && (!SvROK(hrv) || SvTYPE(SvRV(hrv)) != SVt_PVHV)) {
if (!what)
return NULL;
sv_dump(orv);
croak("panic: %s inner handle %s is not a hash ref",
what, neatsvpv(hrv,0));
}
but I'm not sure what it is croaking about. Is this something I need to
worry about?
Thanks.
Martin