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