Re: Re: Class::DBI segfaulting

[prev] [thread] [next] [Date index for 2005/02/28]

From: ivor.williams
Subject: Re: Re: Class::DBI segfaulting
Date: 16:11 on 28 Feb 2005
From: Perrin Harkins <perrin@xxxx.xxx> 
To: ivor.williams@xxx.xxx 
Cc: "cdbi-talk@xxxxxx.xxxxx.xxx" <cdbi-talk@xxxxxx.xxxxx.xxx> 
Subject: Re: Class::DBI segfaulting 
Date: Mon, 28 Feb 2005 10:40:37 -0500 
References: <sympa.1109601166.4789.919@xxxxxx.xxxxx.xxx> 

> On Mon, 2005-02-28 at 14:47 +0000, ivor.williams@xxx.xxx wrote:
>> It's blowing up somewhere under set_up_table.
>> There also doesn't seem to be anything special that Class:DBI::Sybase is 
>> doing.
>
> Well, Class::DBI is pure perl, so either Perl is segfaulting, or
> Class::DBI::Sybase (or some other XS module used in there) is doing it.
> I'd suggest tracing it to the offending line in the debugger as a
> starting point.

I've traced it to Class::DBI::Sybase line 86, where it is trying to
retrieve the results from the procedure sp_help $table. It's actually
segfaulting in Carp::Heavy, probably on account of some dodgy SV that
DBD::Sybase has returned.

Any idea how I would go about tracking this down further?


  DB<1> b 86
  DB<2> c
Class::DBI::Sybase::set_up_table(/home/williami/lib/Class/DBI/Sybase.pm:86):
86:             $col = $sth->fetchall_arrayref(); 
  DB<2> T
. = Class::DBI::Sybase::set_up_table('Test::DBI', 'TEST') called from file `cdbi_test.pl' line 11
  DB<2> s
DBI::st::fetchall_arrayref(/usr/local/lib/perl5/5.6.1/Carp.pm:97):
97:         { local $@; require Carp::Heavy; }  # XXX fix require to not clear $@?
  DB<2> 
DBI::st::fetchall_arrayref(/usr/local/lib/perl5/5.6.1/Carp.pm:97):
97:         { local $@; require Carp::Heavy; }  # XXX fix require to not clear $@?
  DB<2> 
DBI::st::fetchall_arrayref(/usr/local/lib/perl5/5.6.1/Carp.pm:97):
97:         { local $@; require Carp::Heavy; }  # XXX fix require to not clear $@?
  DB<2> 
DBI::st::fetchall_arrayref(/usr/local/lib/perl5/5.6.1/Carp/Heavy.pm:247):
247:    1;
  DB<2> 
DBI::st::fetchall_arrayref(/usr/local/lib/perl5/5.6.1/Carp.pm:98):
98:         goto &longmess_heavy;
  DB<2> 
Carp::longmess_heavy(/usr/local/lib/perl5/5.6.1/Carp/Heavy.pm:30):
30:         return @_ if ref $_[0];
  DB<2> 
Carp::longmess_heavy(/usr/local/lib/perl5/5.6.1/Carp/Heavy.pm:31):
31:         my $error = join '', @_;
  DB<2> 
Carp::longmess_heavy(/usr/local/lib/perl5/5.6.1/Carp/Heavy.pm:32):
32:         my $mess = "";
  DB<2> 
Carp::longmess_heavy(/usr/local/lib/perl5/5.6.1/Carp/Heavy.pm:33):
33:         my $i = 1 + $CarpLevel;
  DB<2> 
Carp::longmess_heavy(/usr/local/lib/perl5/5.6.1/Carp/Heavy.pm:34):
34:         my ($pack,$file,$line,$sub,$hargs,$eval,$require);
  DB<2> 
Carp::longmess_heavy(/usr/local/lib/perl5/5.6.1/Carp/Heavy.pm:35):
35:         my (@a);
  DB<2> 
Carp::longmess_heavy(/usr/local/lib/perl5/5.6.1/Carp/Heavy.pm:39):
39:         while (do { { package DB; @a = caller($i++) } } ) {
  DB<2> 
Carp::longmess_heavy(/usr/local/lib/perl5/5.6.1/Carp/Heavy.pm:39):
39:         while (do { { package DB; @a = caller($i++) } } ) {
  DB<2> 
Carp::longmess_heavy(/usr/local/lib/perl5/5.6.1/Carp/Heavy.pm:124):
124:        $mess || $error;
  DB<2> 
Signal SEGV: 
Abort(coredump)

Class::DBI segfaulting
ivor.williams 14:47 on 28 Feb 2005

Re: Class::DBI segfaulting
Perrin Harkins 15:40 on 28 Feb 2005

Re: Re: Class::DBI segfaulting
ivor.williams 16:11 on 28 Feb 2005

Re: Re: Class::DBI segfaulting
Perrin Harkins 16:19 on 28 Feb 2005

Generated at 20:12 on 07 Mar 2005 by mariachi v0.52