Re: okay, I give, I'm stumped
by Greg Rumple other posts by this author
Jul 29 2002 2:59AM messages near this date
Re: okay, I give, I'm stumped
|
Re: okay, I give, I'm stumped
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 (kyle@centralparksoftware.com) [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/te
st/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
> > grumple@[...].net
>
--
Greg Rumple
grumple@zaphon.llamas.net
Thread:
Greg Rumple
Geoffrey Young
Stas Bekman
Stas Bekman
simran
Geoffrey Young
simran
simran
Kyle Dawkins
Greg Rumple
Drew Taylor
Greg Rumple
David Kaufman
Greg Rumple
|