Hello,

I'm getting a segfault w/ oracle 9i-64bit, DBD-Oracle-1.12,
DBI-1.30, perl 5.80. compiled with sun forte C 6 update 2, flags:
"-mt -fast -xchip=ultra2 -xarch=v9a -xlic_lib=sunperf".
The segfaults come at the end of any series of queries -- that is,
at the END of the scripts. I'm thinking that this might be a PerlIO
problem- not a dbi problem.. what do you think?

----
#!/usr/local/bin/perl -w

$|++;
use strict;
use DBI;
DBI->trace(9);
my $dbh = DBI->connect("DBI:Oracle:host=localhost;sid=ORADB;port=1521",
                       "scott", "tiger");

my $sth = $dbh->prepare(qq{select * from emp});

$sth->execute();

while (my @data = $sth->fetchrow_array()) {
    print @data, "\n";
}

$sth->finish;

----
here's the output without DBI->trace. Everything is good except for
the segv message: 
10ACCOUNTINGNEW YORK
20RESEARCHDALLAS
30SALESCHICAGO
40OPERATIONSBOSTON
Segmentation Fault (core dumped)

here's the output with DBI->trace (this is long!):

    DBI 1.30-nothread dispatch trace level set to 9
    -> DBI->connect(DBI:Oracle:host=localhost;sid=ORADB;port=1521, scott, ****)
    -> DBI->install_driver(Oracle) for solaris perl=5.008 pid=8068 ruid=0 euid=0
       install_driver: DBD::Oracle version 1.12 loaded from 
/usr/local/lib/perl5/site_perl/5.8.0/sun4-solaris/DBD/Oracle.pm
    New DBI::dr (for DBD::Oracle::dr, parent=, id=)
    dbih_setup_handle(DBI::dr=HASH(0x1003abe50)=>DBI::dr=HASH(0x100464350), 
DBD::Oracle::dr, 0, Null!)
    dbih_make_com(Null!, DBD::Oracle::dr, 160) thr#0
    dbih_setup_attrib(DBI::dr=HASH(0x100464350), Err, Null!) SCALAR(0x100355f70) 
(already defined)
    dbih_setup_attrib(DBI::dr=HASH(0x100464350), State, Null!) SCALAR(0x1003ae070) 
(already defined)
    dbih_setup_attrib(DBI::dr=HASH(0x100464350), Errstr, Null!) SCALAR(0x100355f30) 
(already defined)
    dbih_setup_attrib(DBI::dr=HASH(0x100464350), Debug, Null!) 0 (already defined)
    dbih_setup_attrib(DBI::dr=HASH(0x100464350), FetchHashKeyName, Null!) 'NAME' 
(already defined)
    <- install_driver= DBI::dr=HASH(0x1003abe50)
    >> connect     DISPATCH (DBI::dr=HASH(0x1003abe50) rc1/3 @5 g0 ima1 pid#8068) at 
/usr/local/lib/perl5/site_perl/5.8.0/sun4-solaris/DBI.pm line 503 via ./connect.pl 
line 7
    -> connect for DBD::Oracle::dr (DBI::dr=HASH(0x1003abe50)~0x100464350 
'host=localhost;sid=ORADB;port=1521' 'scott' **** HASH(0x10036a430))
    >> trace_msg   DISPATCH (DBI::dr=HASH(0x100464350) rc1/2 @2 g0 ima5 pid#8068) at 
/usr/local/lib/perl5/site_perl/5.8.0/sun4-solaris/DBD/Oracle.pm line 202
1   -> trace_msg in DBD::_::common for DBD::Oracle::dr 
(DBI::dr=HASH(0x100464350)~INNER 'connect using 
'(DESCRIPTION=(ADDRESS=(HOST=localhost)(PROTOCOL=tcp)(PORT=1521))(CONNECT_DATA=(SID=ORADB)))'')
connect using 
'(DESCRIPTION=(ADDRESS=(HOST=localhost)(PROTOCOL=tcp)(PORT=1521))(CONNECT_DATA=(SID=ORADB)))'1
   <- trace_msg= 1 at /usr/local/lib/perl5/site_perl/5.8.0/sun4-solaris/DBD/Oracle.pm 
line 202
    New DBI::db (for DBD::Oracle::db, parent=DBI::dr=HASH(0x100464350), id=)
    dbih_setup_handle(DBI::db=HASH(0x10045d330)=>DBI::db=HASH(0x100322f70), 
DBD::Oracle::db, 1003a94d0, Null!)
    dbih_make_com(DBI::dr=HASH(0x100464350), DBD::Oracle::db, 208) thr#0
    dbih_setup_attrib(DBI::db=HASH(0x100322f70), Err, DBI::dr=HASH(0x100464350)) 
SCALAR(0x100355f70) (already defined)
    dbih_setup_attrib(DBI::db=HASH(0x100322f70), State, DBI::dr=HASH(0x100464350)) 
SCALAR(0x1003ae070) (already defined)
    dbih_setup_attrib(DBI::db=HASH(0x100322f70), Errstr, DBI::dr=HASH(0x100464350)) 
SCALAR(0x100355f30) (already defined)
    dbih_setup_attrib(DBI::db=HASH(0x100322f70), Debug, DBI::dr=HASH(0x100464350)) 0 
(already defined)
    dbih_setup_attrib(DBI::db=HASH(0x100322f70), FetchHashKeyName, 
DBI::dr=HASH(0x100464350)) 'NAME' (already defined)
    dbih_setup_attrib(DBI::db=HASH(0x100322f70), HandleError, 
DBI::dr=HASH(0x100464350)) undef (not defined)
    <- connect= DBI::db=HASH(0x10045d330) at 
/usr/local/lib/perl5/site_perl/5.8.0/sun4-solaris/DBI.pm line 503 via ./connect.pl 
line 7
    >> STORE       DISPATCH (DBI::db=HASH(0x100322f70) rc2/1 @3 g0 ima410 pid#8068) at 
/usr/local/lib/perl5/site_perl/5.8.0/sun4-solaris/DBI.pm line 545 via ./connect.pl 
line 7
    -> STORE for DBD::Oracle::db (DBI::db=HASH(0x100322f70)~INNER 'PrintError' 1)
    STORE DBI::db=HASH(0x100322f70) 'PrintError' => 1
    <- STORE= 1 at /usr/local/lib/perl5/site_perl/5.8.0/sun4-solaris/DBI.pm line 545 
via ./connect.pl line 7
    >> STORE       DISPATCH (DBI::db=HASH(0x100322f70) rc2/1 @3 g0 ima410 pid#8068) at 
/usr/local/lib/perl5/site_perl/5.8.0/sun4-solaris/DBI.pm line 545 via ./connect.pl 
line 7
    -> STORE for DBD::Oracle::db (DBI::db=HASH(0x100322f70)~INNER 'AutoCommit' 1)
    <- STORE= 1 at /usr/local/lib/perl5/site_perl/5.8.0/sun4-solaris/DBI.pm line 545 
via ./connect.pl line 7
    <- connect= DBI::db=HASH(0x10045d330)
    >> prepare     DISPATCH (DBI::db=HASH(0x10045d330) rc1/1 @2 g0 ima1 pid#8068) at 
./connect.pl line 10
    -> prepare for DBD::Oracle::db (DBI::db=HASH(0x10045d330)~0x100322f70 'select * 
from dept')
    New DBI::st (for DBD::Oracle::st, parent=DBI::db=HASH(0x100322f70), id=)
    dbih_setup_handle(DBI::st=HASH(0x100437b10)=>DBI::st=HASH(0x10035c430), 
DBD::Oracle::st, 100437b20, Null!)
    dbih_make_com(DBI::db=HASH(0x100322f70), DBD::Oracle::st, 352) thr#0
    dbih_setup_attrib(DBI::st=HASH(0x10035c430), Err, DBI::db=HASH(0x100322f70)) 
SCALAR(0x100355f70) (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x10035c430), State, DBI::db=HASH(0x100322f70)) 
SCALAR(0x1003ae070) (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x10035c430), Errstr, DBI::db=HASH(0x100322f70)) 
SCALAR(0x100355f30) (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x10035c430), Debug, DBI::db=HASH(0x100322f70)) 0 
(already defined)
    dbih_setup_attrib(DBI::st=HASH(0x10035c430), FetchHashKeyName, 
DBI::db=HASH(0x100322f70)) 'NAME' (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x10035c430), HandleError, 
DBI::db=HASH(0x100322f70)) undef (not defined)
    <- prepare= DBI::st=HASH(0x100437b10) at ./connect.pl line 10
    >> execute     DISPATCH (DBI::st=HASH(0x100437b10) rc1/1 @1 g0 ima41 pid#8068) at 
./connect.pl line 12
    -> execute for DBD::Oracle::st (DBI::st=HASH(0x100437b10)~0x10035c430)
    <- execute= '0E0' at ./connect.pl line 12
    >> fetchrow_array DISPATCH (DBI::st=HASH(0x100437b10) rc1/1 @1 g1 ima0 pid#8068) 
at ./connect.pl line 14
    -> fetchrow_array for DBD::Oracle::st (DBI::st=HASH(0x100437b10)~0x10035c430)
    dbih_setup_fbav for 3 fields => 0x10035c420
    <- fetchrow_array= ( '10' 'ACCOUNTING' 'NEW YORK' ) [3 items] row1 at ./connect.pl 
line 14
10ACCOUNTINGNEW YORK
    >> fetchrow_array DISPATCH (DBI::st=HASH(0x100437b10) rc1/1 @1 g1 ima0 pid#8068) 
at ./connect.pl line 14
    -> fetchrow_array for DBD::Oracle::st (DBI::st=HASH(0x100437b10)~0x10035c430)
    <- fetchrow_array= ( '20' 'RESEARCH' 'DALLAS' ) [3 items] row2 at ./connect.pl 
line 14
20RESEARCHDALLAS
    >> fetchrow_array DISPATCH (DBI::st=HASH(0x100437b10) rc1/1 @1 g1 ima0 pid#8068) 
at ./connect.pl line 14
    -> fetchrow_array for DBD::Oracle::st (DBI::st=HASH(0x100437b10)~0x10035c430)
    <- fetchrow_array= ( '30' 'SALES' 'CHICAGO' ) [3 items] row3 at ./connect.pl line 
14
30SALESCHICAGO
    >> fetchrow_array DISPATCH (DBI::st=HASH(0x100437b10) rc1/1 @1 g1 ima0 pid#8068) 
at ./connect.pl line 14
    -> fetchrow_array for DBD::Oracle::st (DBI::st=HASH(0x100437b10)~0x10035c430)
    <- fetchrow_array= ( '40' 'OPERATIONS' 'BOSTON' ) [3 items] row4 at ./connect.pl 
line 14
40OPERATIONSBOSTON
    >> fetchrow_array DISPATCH (DBI::st=HASH(0x100437b10) rc1/1 @1 g1 ima0 pid#8068) 
at ./connect.pl line 14
    -> fetchrow_array for DBD::Oracle::st (DBI::st=HASH(0x100437b10)~0x10035c430)
    <- fetchrow_array= ( ) [0 items] row4 at ./connect.pl line 14
    >> finish      DISPATCH (DBI::st=HASH(0x100437b10) rc1/1 @1 g0 ima1 pid#8068) at 
./connect.pl line 18
    -> finish for DBD::Oracle::st (DBI::st=HASH(0x100437b10)~0x10035c430)
    <- finish= 1 at ./connect.pl line 18
    >> DESTROY     DISPATCH (DBI::st=HASH(0x100437b10) rc1/1 @1 g0 ima0 pid#8068)
    <> DESTROY ignored for outer handle DBI::st=HASH(0x100437b10) (inner 
DBI::st=HASH(0x10035c430))
    >> DESTROY     DISPATCH (DBI::st=HASH(0x10035c430) rc1/1 @1 g0 ima0 pid#8068)
    -> DESTROY for DBD::Oracle::st (DBI::st=HASH(0x10035c430)~INNER)
    <- DESTROY= undef
    dbih_clearcom (sth 0x100437b10 0x1003bc4d0, com 0x1005366a0, imp DBD::Oracle::st):
       FLAGS 0x111: COMSET Warn PrintError 
       PARENT DBI::db=HASH(0x100322f70)
       KIDS 0 (0 Active)
       IMP_DATA undef
       NUM_OF_FIELDS 3
       NUM_OF_PARAMS 0
    dbih_clearcom 0x100437b10 (com 0x1005366a0, type 3) done.

    >> DESTROY     DISPATCH (DBI::db=HASH(0x10045d330) rc1/1 @1 g0 ima0 pid#8068)
    <> DESTROY ignored for outer handle DBI::db=HASH(0x10045d330) (inner 
DBI::db=HASH(0x100322f70))
    >> DESTROY     DISPATCH (DBI::db=HASH(0x100322f70) rc1/1 @1 g0 ima0 pid#8068)
    -> DESTROY for DBD::Oracle::db (DBI::db=HASH(0x100322f70)~INNER)
    <- DESTROY= undef
    dbih_clearcom (dbh 0x10045d330 0x10040d630, com 0x100266810, imp DBD::Oracle::db):
       FLAGS 0x311: COMSET Warn PrintError AutoCommit 
       PARENT DBI::dr=HASH(0x100464350)
       KIDS 0 (0 Active)
       IMP_DATA undef
    dbih_clearcom 0x10045d330 (com 0x100266810, type 2) done.

    -- DBI::END
    >> disconnect_all DISPATCH (DBI::dr=HASH(0x1003abe50) rc1/3 @1 g0 ima1 pid#8068) 
at /usr/local/lib/perl5/site_perl/5.8.0/sun4-solaris/DBI.pm line 565 via ./connect.pl 
line 0
    -> disconnect_all for DBD::Oracle::dr (DBI::dr=HASH(0x1003abe50)~0x100464350)
    <- disconnect_all= '' at /usr/local/lib/perl5/site_perl/5.8.0/sun4-solaris/DBI.pm 
line 565 via ./connect.pl line 0
Segmentation Fault (core dumped)

-------

here's a dbx stack trace (or my attempt at getting one - heh) for the 
running thread:

(/opt/SUNWspro/WS6U2/bin/sparcv9/dbx) debug /usr/local/bin/perl              
Reading perl
Reading ld.so.1
Reading libmalloc.so.1
Reading libsocket.so.1
Reading libnsl.so.1
Reading libdl.so.1
Reading libm.so.1
Reading libc.so.1
Reading libcrypt_i.so.1
Reading libsec.so.1
Reading libmp.so.2
Reading libgen.so.1
Reading libc_psr.so.1
(/opt/SUNWspro/WS6U2/bin/sparcv9/dbx) runargs "connect.pl"     

(/opt/SUNWspro/WS6U2/bin/sparcv9/dbx) run                 
Running: perl connect.pl 
(process id 7898)
detected a multithreaded program
10ACCOUNTINGNEW YORK
20RESEARCHDALLAS
30SALESCHICAGO
40OPERATIONSBOSTON
signal SEGV (no mapping at the fault address) in Perl_PerlIO_flush at 0x10010a038
0x000000010010a038: Perl_PerlIO_flush+0x0020:   ldx     [%i5 + 0x8], %i4

(/opt/SUNWspro/WS6U2/bin/sparcv9/dbx) where                             
current thread: t@1
=>[1] Perl_PerlIO_flush(0x100255c18, 0x10022e400, 0x10022e4f0, 0x10010c430, 
0x10022f3f0, 0x100), at 0x10010a038
  [2] Perl_PerlIO_flush(0x0, 0x0, 0xffffffff, 0x22e400, 0x1002439b0, 0x0), at 
0x10010a114
  [3] perl_destruct(0x1, 0x241400, 0x10022e400, 0x0, 0x100000000, 0x22e400), at 
0x10001a540
  [4] main(0x2, 0xffffffff7ffff698, 0x10022e448, 0x0, 0x0, 0x1), at 0x100018e88

----

--Pooya

Reply via email to