* David Kaufman ([EMAIL PROTECTED]) [020728 00:55]: > again, just a shot in the dark, but why not try the more mod_perl specific > Apache::DBI instead of plain ole DBI?
Okay I have tried this. I also edited the Apache/DBI.pm and enabled both Apache::DBI and DBI debugging at level 2 so I could get a better idea of what is going on before it dies. I also put a line at the top of my perl file and the end of my perl file defining the begin and end. Here's what I see before it dies. DBI 1.21-nothread dispatch trace level set to 2 Note: perl is running without the recommended perl -w option ------------ BEGIN ----------- -> DBI->Apache::DBI::connect(dbi:Informix:test, test, ****) -> DBI->install_driver(Informix) for linux perl=5.006001 pid=17059 ruid=1000 euid=1000 install_driver: DBD::Informix version 1.00.PC2 loaded from /usr/local/lib/perl/5.6.1/DBD/Informix.pm <- install_driver= DBI::dr=HASH(0x819f0a8) <- FETCH= 'Informix' ('Name' from cache) at DBI.pm line 64 17059 Apache::DBI skipping connection during server startup, read the docu !! -> connect for DBD::Informix::dr (DBI::dr=HASH(0x819f0a8)~0x81f50a0 'test' 'test' **** HASH(0x817d044)) -->> DBD::Informix::dbd_ix_db_preset() AutoCommit set to 1 <<-- DBD::Informix::dbd_ix_db_preset() -->> DBD::Informix::dbd_ix_db_login() CONNECT TO 'test' with user info <<-- DBD::Informix::dbd_ix_db_login() <- connect= DBI::db=HASH(0x81d4204) at DBI.pm line 83 -> STORE for DBD::Informix::db (DBI::db=HASH(0x81e1b68)~INNER 'PrintError' 1) -->> DBD::Informix::dbd_ix_db_STORE_attrib() <<-- DBD::Informix::dbd_ix_db_STORE_attrib() <- STORE= 1 at DBI.pm line 513 -> STORE for DBD::Informix::db (DBI::db=HASH(0x81e1b68)~INNER 'AutoCommit' 1) -->> DBD::Informix::dbd_ix_db_STORE_attrib() <<-- DBD::Informix::dbd_ix_db_STORE_attrib() <- STORE= 1 at DBI.pm line 513 <- connect= DBI::db=HASH(0x81d4204) ------------ END ----------- -> DESTROY for DBD::Informix::db (DBI::db=HASH(0x81e1b68)~INNER) -->> DBD::Informix::dbd_ix_db_disconnect() DBD::Informix::dbd_ix_db_disconnect -- delete statements -->> DBD::Informix::dbd_ix_link_delchain() <<-- DBD::Informix::dbd_ix_link_delchain() DBD::Informix::dbd_ix_db_disconnect -- statements deleted DISCONNECT (x_000000000) DISCONNECT -- STATUS 0 <<-- DBD::Informix::dbd_ix_db_disconnect() -->> DBD::Informix::dbd_ix_db_destroy() <<-- DBD::Informix::dbd_ix_db_destroy() <- DESTROY= undef Than it cores, all new core dump. #0 0x40260194 in Perl_share_hek () from /usr/lib/libperl.so.5.6 #1 0x4025e919 in Perl_hv_store () from /usr/lib/libperl.so.5.6 #2 0x4025e56a in Perl_hv_fetch () from /usr/lib/libperl.so.5.6 #3 0x4021fa44 in Perl_gv_fetchpv () from /usr/lib/libperl.so.5.6 #4 0x40225a1c in Perl_yylex () from /usr/lib/libperl.so.5.6 #5 0x402374f0 in Perl_yyparse () from /usr/lib/libperl.so.5.6 #6 0x4028bc49 in Perl_sv_compile_2op () from /usr/lib/libperl.so.5.6 #7 0x4028cf6c in Perl_pp_require () from /usr/lib/libperl.so.5.6 #8 0x40262411 in Perl_runops_standard () from /usr/lib/libperl.so.5.6 #9 0x4021ab2c in perl_call_sv () from /usr/lib/libperl.so.5.6 #10 0x4021a89e in perl_call_sv () from /usr/lib/libperl.so.5.6 #11 0x4021e1db in Perl_call_list () from /usr/lib/libperl.so.5.6 #12 0x4021de4f in Perl_call_list () from /usr/lib/libperl.so.5.6 #13 0x40242b92 in Perl_newATTRSUB () from /usr/lib/libperl.so.5.6 #14 0x4023face in Perl_utilize () from /usr/lib/libperl.so.5.6 #15 0x4023829a in Perl_yyparse () from /usr/lib/libperl.so.5.6 #16 0x4028bc49 in Perl_sv_compile_2op () from /usr/lib/libperl.so.5.6 #17 0x4028cf6c in Perl_pp_require () from /usr/lib/libperl.so.5.6 #18 0x40262411 in Perl_runops_standard () from /usr/lib/libperl.so.5.6 #19 0x4021ab2c in perl_call_sv () from /usr/lib/libperl.so.5.6 #20 0x4021a89e in perl_call_sv () from /usr/lib/libperl.so.5.6 #21 0x4021e1db in Perl_call_list () from /usr/lib/libperl.so.5.6 #22 0x4021de4f in Perl_call_list () from /usr/lib/libperl.so.5.6 #23 0x40242b92 in Perl_newATTRSUB () from /usr/lib/libperl.so.5.6 #24 0x4023face in Perl_utilize () from /usr/lib/libperl.so.5.6 #25 0x4023829a in Perl_yyparse () from /usr/lib/libperl.so.5.6 #26 0x4028bc49 in Perl_sv_compile_2op () from /usr/lib/libperl.so.5.6 #27 0x4028cf6c in Perl_pp_require () from /usr/lib/libperl.so.5.6 #28 0x40262411 in Perl_runops_standard () from /usr/lib/libperl.so.5.6 #29 0x4021ab2c in perl_call_sv () from /usr/lib/libperl.so.5.6 #30 0x4021a89e in perl_call_sv () from /usr/lib/libperl.so.5.6 #31 0x4021e1db in Perl_call_list () from /usr/lib/libperl.so.5.6 #32 0x4021de4f in Perl_call_list () from /usr/lib/libperl.so.5.6 #33 0x40242b92 in Perl_newATTRSUB () from /usr/lib/libperl.so.5.6 #34 0x4023face in Perl_utilize () from /usr/lib/libperl.so.5.6 #35 0x4023829a in Perl_yyparse () from /usr/lib/libperl.so.5.6 #36 0x4028bc49 in Perl_sv_compile_2op () from /usr/lib/libperl.so.5.6 #37 0x4028cf6c in Perl_pp_require () from /usr/lib/libperl.so.5.6 #38 0x40262411 in Perl_runops_standard () from /usr/lib/libperl.so.5.6 #39 0x4021ab2c in perl_call_sv () from /usr/lib/libperl.so.5.6 #40 0x4021a89e in perl_call_sv () from /usr/lib/libperl.so.5.6 #41 0x4021e1db in Perl_call_list () from /usr/lib/libperl.so.5.6 #42 0x4021de4f in Perl_call_list () from /usr/lib/libperl.so.5.6 #43 0x40242b92 in Perl_newATTRSUB () from /usr/lib/libperl.so.5.6 #44 0x4023face in Perl_utilize () from /usr/lib/libperl.so.5.6 #45 0x4023829a in Perl_yyparse () from /usr/lib/libperl.so.5.6 #46 0x4028bc49 in Perl_sv_compile_2op () from /usr/lib/libperl.so.5.6 #47 0x4028cf6c in Perl_pp_require () from /usr/lib/libperl.so.5.6 #48 0x40262411 in Perl_runops_standard () from /usr/lib/libperl.so.5.6 #49 0x4021ab2c in perl_call_sv () from /usr/lib/libperl.so.5.6 #50 0x4021acce in perl_eval_sv () from /usr/lib/libperl.so.5.6 #51 0x404856e4 in perl_require_module (name=0x404abd64 "Apache", s=0x8094c04) at perl_util.c:550 #52 0x4047e9d7 in perl_cmd_module (parms=0xbffff8fc, dummy=0x8096904, arg=0x82147fc "Apache::DBI") at perl_config.c:591 #53 0x08054e7d in invoke_cmd (cmd=0x404b3090, parms=0xbffff8fc, mconfig=0x8096904, args=0xbfffd872 "") at http_config.c:946 #54 0x08055301 in ap_handle_command (parms=0xbffff8fc, config=0x8095134, l=0xbfffd85c "PerlModule Apache::DBI") at http_config.c:1079 #55 0x0805539d in ap_srm_command_loop (parms=0xbffff8fc, config=0x8095134) at http_config.c:1093 #56 0x08055a69 in ap_process_resource_config (s=0x8094c04, fname=0x808d700 "/var/tmp/test.conf", p=0x8094bdc, ptemp=0x809f2fc) at http_config.c:1355 #57 0x080563bc in ap_read_config (p=0x8094bdc, ptemp=0x809f2fc, confname=0x808d700 "/var/tmp/test.conf") at http_config.c:1647 #58 0x08060c43 in standalone_main (argc=6, argv=0xbffffa64) at http_main.c:5158 #59 0x080615cc in main (argc=6, argv=0xbffffa64) at http_main.c:5558 So for grins, I than decided I would try postgres to just verify this is an Informix issue. I commented out the Informix lines in my startup perl script, and added the 4 lines necessary to connect to a local postgres database, and sure enough it works. Here's what the output looks like. DBI 1.21-nothread dispatch trace level set to 2 Note: perl is running without the recommended perl -w option ------------ BEGIN ----------- -> DBI->Apache::DBI::connect(dbi:Pg:dbname=ftf;host=grumple;port=6110, , ****) -> DBI->install_driver(Pg) for linux perl=5.006001 pid=17070 ruid=1000 euid=1000 install_driver: DBD::Pg version 1.11 loaded from /home/grumple/src/ftf.newshit/ext/lib/perl5/DBD/Pg.pm <- install_driver= DBI::dr=HASH(0x819f0a8) <- FETCH= 'Pg' ('Name' from cache) at DBI.pm line 64 17070 Apache::DBI skipping connection during server startup, read the docu !! -> connect for DBD::Pg::dr (DBI::dr=HASH(0x819f0a8)~0x81f656c 'dbname=ftf;host=grumple;port=6110' '' **** HASH(0x817d044)) pg_db_login pg_db_login: conn_str = >dbname=ftf host=grumple port=6110< <- connect= DBI::db=HASH(0x81f6530) at DBI.pm line 83 -> STORE for DBD::Pg::db (DBI::db=HASH(0x81f6518)~INNER 'PrintError' 1) dbd_db_STORE <- STORE= 1 at DBI.pm line 513 -> STORE for DBD::Pg::db (DBI::db=HASH(0x81f6518)~INNER 'AutoCommit' 1) dbd_db_STORE dbd_db_STORE: initialize AutoCommit to on <- STORE= 1 at DBI.pm line 513 <- connect= DBI::db=HASH(0x81f6530) ------------ END ----------- -> DESTROY for DBD::Pg::db (DBI::db=HASH(0x81f6518)~INNER) Database handle destroyed without explicit disconnect. dbd_db_disconnect dbd_db_destroy <- DESTROY= undef It seems to just look good, and work all dandy. Yet the Informix driver just blows up horribly. > > > use DBD::Informix; > > i don't think you need this use statement at all. the DBI->connect() call > should load the "correct" DBD Driver, for you, not that it *should* make any > difference... but hey. Me either, just put it in there just in case. Makes NO difference. > i would certainly suggest adding: > > or die DBI::errstr; > > to that connect() call! Yeah, was just throwing together a sample program. Not trying to put together something to be "production" quality. :-) > > > $dbh->disconnect(); > > um, okay but why disconnect at all, if you know the segfault is caused by > the connect and/or disconnect calls? have you tries simply *not* > disconnecting? one of The Features/Advantages of Apache::DBI (over plain > ole DBI) is that disconnect calls simlpy destroy the connection *object* > (the perl data structure) without actually disconnecting from the DB, and > therby maintaining a pool of cached connections, and therby speeding things > up nicely. I have removed the disconnect, but it makes no difference as suspected. I will note that once the server is started, it has 0 problems communicating with Informix, it's only in this startup script that it blows up badly. -- Greg Rumple [EMAIL PROTECTED]