Yup, this is it.  If I build it without DSO support, it appears to work.
Of course I build this with mod_php, mod_ssl, mod_perl, and a couple of
custom modules.  So running without DSO support isn't to easy.  I guess
I can attempt to build mod_perl in, but keep DSO support and dynamic
load the rest of the modules.  Will try that.

* Kyle Dawkins ([EMAIL PROTECTED]) [020728 18:58]:
> Hey Greg et al.
> 
> I'd betcha your problem is almost certainly caused by your use of DSOs. If
> you *really* want to prune your system down to see where your bug is, then
> build apache and mod_perl statically.  There was a very well-known bug that
> caused DBI to segfault if it was run under a DSO.   Please rebuild your
> binary and then let us know if that was the problem.
> 
> Kyle Dawkins
> Central Park Software
> http://www.centralparksoftware.com
> 
> 
> > Okay, I've been staring at this problem for close to 48 hours straight
> > now and have finally narrowed it down to a set of lines of code.
> >
> > So let me first expand.
> >
> > I currently have a system running, with Apache 1.3.14 and Mod_Perl 1.24
> > on Redhat 7.0 (yeah REALLY REALLY ancient) and Perl 5.005003.  It also
> > has mod_ssl, and several other modules loaded, but for the sake of the
> > problems I am having, I completely removed those.
> >
> > This actually runs perl scripts that connect and talk to (yeah dig
> > this), Postgres, Mysql, and Informix.  The root of my problems, as I
> > have finally found, is Informix.
> >
> > In our httpd.conf, we utilize a PerlScript directive to preload a bunch
> > of environment variables, and other stuff at startup.  The script is
> > pretty nasty and harry, and buried deep within it happened to be a call
> > to Informix.
> >
> > So for the record, the current system (ancient stuff) works.
> >
> > So the problems began.  I decided to upgrade to Apache 1.3.26 and
> > Mod_Perl 1.27 on Debian Woody (3.0) and Perl 5.006001.  I also built all
> > the other libraries, and than the fun began.
> >
> > At first, I just got seg faults attempting to start apache.  But as I
> > have said above, I have narrowed it down to a set of lines of code that
> > cause it to fail.
> >
> > So if I build Apache 1.3.26 and Mod_perl 1.27 by themselves, using
> > pretty straight forward options..
> >
> > Apache
> > ------
> > CC="gcc" \
> > CFLAGS="-g" \
> > LIBS="-L/home/grumple/src/test/lib
> > -L/home/grumple/src/test/system/lib " \
> > ./configure \
> > "--prefix=/home/grumple/src/test/system" \
> > "--enable-module=most" \
> > "--enable-shared=max" \
> > "--with-layout=GNU" \
> > "--disable-rule=EXPAT" \
> > "$@"
> > ----------------------
> >
> > and
> >
> > Mod_perl
> > --------
> > perl Makefile.PL PERL_USELARGEFILES=0 PERL_DEBUG=1 USE_APXS=1
> WITH_APXS=/home/grumple/src/test/system/sbin/apxs EVERYTHING=1
> INC=/home/grumple/src/test/system/include
> > ----------------------
> >
> > and than my conf
> >
> > httpd.conf
> > ----------
> > AccessConfig /dev/null
> > ResourceConfig /dev/null
> >
> > LoadModule env_module         libexec/mod_env.so
> > LoadModule config_log_module  libexec/mod_log_config.so
> > LoadModule mime_module        libexec/mod_mime.so
> > LoadModule autoindex_module   libexec/mod_autoindex.so
> > LoadModule dir_module         libexec/mod_dir.so
> > LoadModule alias_module       libexec/mod_alias.so
> > LoadModule access_module      libexec/mod_access.so
> > LoadModule auth_module        libexec/mod_auth.so
> > LoadModule setenvif_module    libexec/mod_setenvif.so
> >
> > AddModule mod_env.c
> > AddModule mod_log_config.c
> > AddModule mod_mime.c
> > AddModule mod_autoindex.c
> > AddModule mod_dir.c
> > AddModule mod_alias.c
> > AddModule mod_access.c
> > AddModule mod_auth.c
> > AddModule mod_setenvif.c
> >
> > ServerType standalone
> > ServerRoot "/home/grumple/src/test/system"
> >
> > PidFile        /var/tmp/run/test.pid
> > LockFile       /var/tmp/test.lock
> > ScoreBoardFile /var/tmp/test.scoreboard
> >
> > Timeout 300
> > KeepAlive On
> > MaxKeepAliveRequests 100
> > KeepAliveTimeout 15
> > MinSpareServers 2
> > MaxSpareServers 10
> > StartServers    3
> > MaxClients      256
> > MaxRequestsPerChild 1000
> >
> > LoadModule perl_module libexec/libperl.so
> > AddModule mod_perl.c
> >
> > ServerName grumple
> > Port       6180
> >
> > Listen 6180
> >
> > ServerAdmin yeah@right
> > DocumentRoot /home/grumple/src/test/www/htdocs
> >
> > <Directory />
> > Options FollowSymLinks
> > AllowOverride None
> > </Directory>
> >
> > <Directory "/home/grumple/src/test/www/htdocs">
> > Options FollowSymLinks
> > AllowOverride None
> > Order allow,deny
> > Allow from all
> > </Directory>
> >
> > DirectoryIndex index.tp index.htm index.html index.cgi
> > AccessFileName .htaccess
> > <Files .htaccess>
> > Order allow,deny
> > Deny from all
> > </Files>
> >
> > UseCanonicalName On
> > TypesConfig "/home/grumple/src/test/system/etc/httpd/mime.types"
> > DefaultType text/plain
> > HostnameLookups Off
> > LogLevel warn
> >
> > LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
> combined
> > CustomLog "/var/tmp/logs/test.access" combined
> > ErrorLog "/var/tmp/logs/test.errors"
> >
> > ReadmeName README
> > HeaderName HEADER
> >
> > IndexOptions FancyIndexing
> > IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
> >
> > AddEncoding x-compress Z
> > AddEncoding x-gzip gz
> >
> > AddHandler send-as-is asis
> > AddHandler imap-file map
> >
> > BrowserMatch "Mozilla/2" nokeepalive
> > BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
> > BrowserMatch "RealPlayer 4\.0" force-response-1.0
> > BrowserMatch "Java/1\.0" force-response-1.0
> > BrowserMatch "JDK/1\.0" force-response-1.0
> >
> > AddHandler cgi-script .cgi
> > PerlScript /var/tmp/test.pl
> >
> > AddType application/x-x509-ca-cert .crt
> > AddType application/x-pkcs7-crl .crl
> >
> > ErrorDocument 404 /index.tp
> > ----------------------
> >
> > And here's the magical part, the test.pl script that causes the problem.
> >
> > test.pl
> > -------
> > BEGIN {
> >     unshift(@INC, qw(
> >         /home/grumple/src/test/lib/perl5
> >         /home/grumple/src/test/system/lib/perl5
> >     ));
> > }
> >
> > use strict;
> >
> > use DBI;
> > use DBD::Informix;
> >
> > ## informix connection params
> > $ENV{'INFORMIXDIR'}    ||= '/opt/informix';
> > $ENV{'INFORMIXSERVER'} ||= 'test_tcp';
> > $ENV{'LD_LIBRARY_PATH'} .= ":$ENV{'INFORMIXDIR'}/lib";
> >
> > my $catalog = 'test';
> > my $constr = join(':', 'dbi', 'Informix', $catalog);
> > my $user = 'test';
> > my $password = 'test';
> >
> > my $dbh = DBI->connect($constr,$user,$password);
> >
> > $dbh->disconnect();
> >
> > 1;
> > ----------------------
> >
> > So all looks good right?  Well it does, other than running above yields
> > the following crash in GDB.
> >
> > Program received signal SIGSEGV, Segmentation fault.
> > 0x400e7a90 in free () from /lib/libc.so.6
> > (gdb) bt
> > #0  0x400e7a90 in free () from /lib/libc.so.6
> > #1  0x40255d3b in Perl_safefree () from /usr/lib/libperl.so.5.6
> > #2  0x402705eb in Perl_sv_clear () from /usr/lib/libperl.so.5.6
> > #3  0x4027088f in Perl_sv_free () from /usr/lib/libperl.so.5.6
> > #4  0x40274d6f in Perl_sv_vcatpvfn () from /usr/lib/libperl.so.5.6
> > #5  0x4026a378 in Perl_sv_add_arena () from /usr/lib/libperl.so.5.6
> > #6  0x4026a434 in Perl_sv_clean_all () from /usr/lib/libperl.so.5.6
> > #7  0x40219b75 in perl_destruct () from /usr/lib/libperl.so.5.6
> > #8  0x401bbb77 in perl_shutdown (s=0x0, p=0x0) at mod_perl.c:294
> > #9  0x401bc507 in mp_dso_unload (data=0x8094bdc) at mod_perl.c:489
> > #10 0x08050c39 in run_cleanups (c=0x80a06cc) at alloc.c:1713
> > #11 0x0804f2d5 in ap_clear_pool (a=0x8094bdc) at alloc.c:538
> > #12 0x08060bfc in standalone_main (argc=6, argv=0xbffffac4) at
> http_main.c:5058
> > #13 0x080615cc in main (argc=6, argv=0xbffffac4) at http_main.c:5448
> >
> > The test.pl script works fine by it's self.  Turning on full PERL
> > debugging/tracing yields that the actual script has fully finished, and
> > that it's in the tear down of the actualy perl stuff that this failure
> > is coming from.   Not from the script per se.  But it is the script that
> > is causing this problem.  Commenting out the connect and disconnect
> > lines causes the server to startup and function just fine.
> >
> > So I'm not quite sure what to do.  I know I can get my entire system
> > working if I don't make the calls to Informix at startup (it appears
> > it's purely the connect that causes the error (whether it's a good
> > connect or not, I tried giving it a bogus password, and it still
> > crashes)), but well that's kind of a pain in the butt.
> >
> > So if anyone has ANY clues, it would be sincerely appreciated, as I need
> > sleep, and I also would love to get this working.
> >
> > Thanks a ton in advance.
> >
> > Greg
> >
> >
> > --
> > Greg Rumple
> > [EMAIL PROTECTED]
> 

-- 
Greg Rumple
[EMAIL PROTECTED]

Reply via email to