Search this list for similar issue I previously replied to. You are probably getting this because you have mixed Perl, unixODBC, MySQL where some were built with -pthread and some were not. What seems to happen is that some internal structure used by dlopen/dlclose is different when built threaded or not (on some Linuxes/glibcs).
Try adding DontDLClose = 1 to the driver entry in odbcinst.ini. Try rebuilding unixODBC and MySQL with -pthread to make them all the same. Martin -- Martin J. Evans Easysoft Ltd, UK Development On 16-May-2005 Stephen More wrote: > I have compiled DBD-ODBC-1.13 on RedHat Enterprise Linux 4. > > Failed 2/9 test scripts, 77.78% okay. 6/137 subtests failed, 95.62% okay. > Good enough for me so I installed it. > > I am using unixODBC-2.2.9-. connecting with isql is fine: > $isql mysql1 root > > Yet a simple perl script: > #!/usr/bin/perl -w > > use strict; > use DBD::ODBC; > DBI->trace( 1000 ); > my( $dbh ) = DBI->connect( "dbi:ODBC:mysql1", "root" ); > > creates a Segmentation fault... > > $ ./odbc.pl > DBI 1.40-ithread dispatch trace level set to 1000 (in pid 9488) > -> DBI->connect(dbi:ODBC:mysql1, root, ****) > -> DBI->install_driver(ODBC) for linux perl=5.008005 pid=9488 > ruid=501 euid=501 > install_driver: DBD::ODBC version 1.13 loaded from > /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/DBD/ODBC.pm > New DBI::dr (for DBD::ODBC::dr, parent=, id=) > dbih_setup_handle(DBI::dr=HASH(0x8d95808)=>DBI::dr=HASH(0x8df7e78), > DBD::ODBC::dr, 0, Null!) > dbih_make_com(Null!, 0, DBD::ODBC::dr, 92, 0) thr#8c99008 > dbih_setup_attrib(DBI::dr=HASH(0x8df7e78), Err, Null!) > SCALAR(0x8cb4a14) (already defined) > dbih_setup_attrib(DBI::dr=HASH(0x8df7e78), State, Null!) > SCALAR(0x8cba338) (already defined) > dbih_setup_attrib(DBI::dr=HASH(0x8df7e78), Errstr, Null!) > SCALAR(0x8cba314) (already defined) > dbih_setup_attrib(DBI::dr=HASH(0x8df7e78), TraceLevel, Null!) 0 > (already defined) > dbih_setup_attrib(DBI::dr=HASH(0x8df7e78), FetchHashKeyName, > Null!) 'NAME' (already defined) > <- install_driver= DBI::dr=HASH(0x8d95808) > >> default_user DISPATCH (DBI::dr=HASH(0x8d95808) rc1/3 @4 g1 ima1 > pid#9488) at /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/DBI.pm > line 572 via ./odbc2.pl line 9 > -> default_user in DBD::_::dr for DBD::ODBC::dr > (DBI::dr=HASH(0x8d95808)~0x8df7e78 'root' undef HASH(0x8d610a0)) > thr#8c99008 > <- default_user= ( 'root' undef ) [2 items] at > /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/DBI.pm line > 572 via ./odbc2.pl line 9 > >> connect DISPATCH (DBI::dr=HASH(0x8d95808) rc2/3 @5 g0 ima1 > pid#9488) at /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/DBI.pm > line 590 > -> connect for DBD::ODBC::dr (DBI::dr=HASH(0x8d95808)~0x8df7e78 > 'mysql1' 'root' **** HASH(0x8df9084)) thr#8c99008 > New DBI::db (for DBD::ODBC::db, parent=DBI::dr=HASH(0x8df7e78), id=) > dbih_setup_handle(DBI::db=HASH(0x8df7e3c)=>DBI::db=HASH(0x8df90d8), > DBD::ODBC::db, 8d92f38, Null!) > dbih_make_com(DBI::dr=HASH(0x8df7e78), 8df8460, DBD::ODBC::db, > 224, 0) thr#8c99008 > dbih_setup_attrib(DBI::db=HASH(0x8df90d8), Err, > DBI::dr=HASH(0x8df7e78)) SCALAR(0x8d99280) (already defined) > dbih_setup_attrib(DBI::db=HASH(0x8df90d8), State, > DBI::dr=HASH(0x8df7e78)) SCALAR(0x8d992e0) (already defined) > dbih_setup_attrib(DBI::db=HASH(0x8df90d8), Errstr, > DBI::dr=HASH(0x8df7e78)) SCALAR(0x8d992b0) (already defined) > dbih_setup_attrib(DBI::db=HASH(0x8df90d8), TraceLevel, > DBI::dr=HASH(0x8df7e78)) 0 (already defined) > dbih_setup_attrib(DBI::db=HASH(0x8df90d8), FetchHashKeyName, > DBI::dr=HASH(0x8df7e78)) 'NAME' (already defined) > dbih_setup_attrib(DBI::db=HASH(0x8df90d8), HandleError, > DBI::dr=HASH(0x8df7e78)) undef (not defined) > Driver connect 'mysql1', 'root', 'xxxx' > SQLDriverConnect failed: > SQLConnect 'mysql1', 'root' > Connected to: MySQL > SQLGetFunctions - SQL_MoreResults supported: 1 > <- connect= DBI::db=HASH(0x8df7e3c) at > /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/DBI.pm line > 590 > >> STORE DISPATCH (DBI::db=HASH(0x8df90d8) rc2/1 @3 g0 > ima41c pid#9488) at > /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/DBI.pm line > 633 > -> STORE for DBD::ODBC::db (DBI::db=HASH(0x8df90d8)~INNER > 'PrintError' 1) thr#8c99008 > DBD::ODBC unsupported attribute passed (PrintError) > STORE DBI::db=HASH(0x8df90d8) 'PrintError' => 1 > <- STORE= 1 at > /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/DBI.pm line > 633 > >> STORE DISPATCH (DBI::db=HASH(0x8df90d8) rc2/1 @3 g0 > ima41c pid#9488) at > /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/DBI.pm line > 633 > -> STORE for DBD::ODBC::db (DBI::db=HASH(0x8df90d8)~INNER > 'AutoCommit' 1) thr#8c99008 > <- STORE= 1 at > /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/DBI.pm line > 633 > >> STORE DISPATCH (DBI::db=HASH(0x8df90d8) rc2/1 @3 g0 > ima41c pid#9488) at > /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/DBI.pm line > 636 > -> STORE for DBD::ODBC::db (DBI::db=HASH(0x8df90d8)~INNER > 'Username' 'root') thr#8c99008 > DBD::ODBC unsupported attribute passed (Username) > STORE DBI::db=HASH(0x8df90d8) 'Username' => 'root' > <- STORE= 1 at > /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/DBI.pm line > 636 > <- connect= DBI::db=HASH(0x8df7e3c) > >> STORE DISPATCH (DBI::db=HASH(0x8df90d8) rc2/1 @3 g0 > ima41c pid#9488) at > /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/DBI.pm line > 650 via ./odbc2.pl line 9 > -> STORE for DBD::ODBC::db (DBI::db=HASH(0x8df90d8)~INNER > 'dbi_connect_closure' CODE(0x8df7d88)) thr#8c99008 > DBD::ODBC unsupported attribute passed (dbi_connect_closure) > STORE DBI::db=HASH(0x8df90d8) 'dbi_connect_closure' => CODE(0x8df7d88) > <- STORE= 1 at > /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/DBI.pm line > 650 via ./odbc2.pl line 9 > >> DESTROY DISPATCH (DBI::db=HASH(0x8df7e3c) rc1/1 @1 g0 ima4 > pid#9488) > <> DESTROY ignored for outer handle DBI::db=HASH(0x8df7e3c) (inner > DBI::db=HASH(0x8df90d8)) > >> DESTROY DISPATCH (DBI::db=HASH(0x8df90d8) rc1/1 @1 g0 ima4 > pid#9488) > -> DESTROY for DBD::ODBC::db (DBI::db=HASH(0x8df90d8)~INNER) thr#8c99008 > Segmentation fault > > > What have I done wrong ? > > -Steve More