I'd be grateful for any ideas on where to push this next. I have a
dodgy workaround, but it doesn't make me all that comfortable !
-------------8<---------- Start Bug Report ------------8<----------
1. Problem Description:
Using IO::Socket::INET->new() causes a SIGSEGV
The test code is pretty simple ...
my $sock = IO::Socket::INET->new ({'Proto' => 'tcp',
'PeerAddr' => 'localhost',
'PeerPort' => 80});
The problem seems to be down in libnss. It seems to get confused
just after opening (the non-existent) /var/db/protocols.db, and
then SISGEGVs. The same libnss works fine outside of mod_perl,
via the same Perl & IO::Socket::INET; I guess there might be some
interaction between mod_perl/Apache and libnss.
libnss is part of libc, which for me is version 2.2.3 (slackware 9.1).
The symptom vanishes by configuring /etc/nsswitch.conf to only
use files for protocols (just delete the 'db' bit :), but I'm
worried that the problem is still lying around, and could surface
as some other random SIGSEGV.
I've used the bug template, and have a dist available at:
<http://worrall.cc/bug-reporting-skeleton-mp2.tar.gz>
2. Used Components and their Configuration:
*** mod_perl version 1.9915
*** using /opt/local/apps/apache/new/src/mod_perl-2.0/lib/Apache/BuildConfig.pm
*** Makefile.PL options:
MP_APR_LIB => aprext
MP_AP_PREFIX => /apps/apache/new
MP_COMPAT_1X => 1
MP_DEBUG => 1
MP_GENERATE_XS => 1
MP_LIBNAME => mod_perl
MP_TRACE => 1
MP_USE_DSO => 1
MP_USE_STATIC => 1
*** /apps/apache/new/bin/httpd -V
Server version: Apache/2.0.50
Server built: Jul 17 2004 14:17:40
Server's Module Magic Number: 20020903:8
Architecture: 32-bit
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D HTTPD_ROOT="/apps/apache/new"
-D SUEXEC_BIN="/apps/apache/new/bin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
*** (apr|apu)-config linking info
-L/apps/apache/new/lib -lapr-0 -lrt -lm -lcrypt -lnsl -lpthread -ldl
-L/apps/apache/new/lib -laprutil-0 -lgdbm -ldb-4.2 -lexpat
*** /apps/apache/common/local2/bin/perl -V
Summary of my perl5 (revision 5 version 8 subversion 4) configuration:
Platform:
osname=linux, osvers=2.4.5, archname=i686-linux-thread-multi
uname='linux deacon 2.4.5 #6 fri jun 22 01:38:20 pdt 2001 i686 unknown '
config_args='-des -Dprefix=/apps/apache/common/local2 -Dusethreads -Doptimize=-g'
hint=recommended, useposix=true, d_sigaction=define
usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBUGGING
-fno-strict-aliasing
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-g',
cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBUGGING
-fno-strict-aliasing -I/usr/local/include'
ccversion='', gccversion='2.95.3 20010315 (release)', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=4, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib
libs=-lnsl -lndbm -lgdbm -ldl -lm -lcrypt -lutil -lpthread -lc
perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
libc=/lib/libc-2.2.3.so, so=so, useshrplib=false, libperl=libperl.a
gnulibc_version='2.2.3'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'
Characteristics of this binary (from libperl):
Compile-time options: DEBUGGING MULTIPLICITY USE_ITHREADS USE_LARGE_FILES
PERL_IMPLICIT_CONTEXT
Built under linux
Compiled at Jul 17 2004 14:24:17
%ENV:
PERL_LWP_USE_HTTP_10="1"
@INC:
/apps/apache/common/local2/lib/perl5/5.8.4/i686-linux-thread-multi
/apps/apache/common/local2/lib/perl5/5.8.4
/apps/apache/common/local2/lib/perl5/site_perl/5.8.4/i686-linux-thread-multi
/apps/apache/common/local2/lib/perl5/site_perl/5.8.4
/apps/apache/common/local2/lib/perl5/site_perl
.
*** Packages of interest status:
Apache::Request: -
CGI : 3.04
LWP : 5.79
mod_perl : 1.9915
3. This is the core dump trace: (if you get a core dump):
#0 0x0 in __strtol_internal (nptr=0x405e4072 "/var/db/protocols.db", endptr=0x1,
base=16, group=0) at eval.c:35
#1 0x405e3e1e in db_open () from /lib/libnss_db.so.2
#2 0x405e3ed0 in internal_setent () from /lib/libnss_db.so.2
#3 0x405e290e in _nss_db_endprotoent () from /lib/libnss_db.so.2
#4 0x405e2b78 in _nss_db_getprotobyname_r () from /lib/libnss_db.so.2
#5 0x4029547f in __getprotobyname_r (name=0x8322f98 "tcp", resbuf=0x81c7e64,
buffer=0x81cb2e8 "�<,@�<,@", '�' <repeats 192 times>..., buflen=4096,
result=0x81c7e78)
at ../nss/getXXbyYY_r.c:200
#6 0x4043275d in Perl_pp_gprotoent (my_perl=0x81a3278) at pp_sys.c:4888
#7 0x4043266a in Perl_pp_gpbyname (my_perl=0x81a3278) at pp_sys.c:4855
#8 0x403b1841 in Perl_runops_debug (my_perl=0x81a3278) at dump.c:1442
#9 0x40354a53 in S_call_body (my_perl=0x81a3278, myop=0xbffff268, is_eval=0) at
perl.c:2285
#10 0x40354543 in Perl_call_sv (my_perl=0x81a3278, sv=0x822f5c0, flags=4) at
perl.c:2203
#11 0x40331373 in modperl_callback (my_perl=0x81a3278, handler=0x8241830, p=0x82397f0,
r=0x8239828,
s=0x80a1110, args=0x8195648) at modperl_callback.c:99
#12 0x40331dcd in modperl_callback_run_handlers (idx=6, type=4, r=0x8239828, c=0x0,
s=0x80a1110, pconf=0x0,
plog=0x0, ptemp=0x0, run_mode=MP_HOOK_RUN_FIRST) at modperl_callback.c:268
#13 0x40332050 in modperl_callback_per_dir (idx=6, r=0x8239828,
run_mode=MP_HOOK_RUN_FIRST)
at modperl_callback.c:356
#14 0x4032a0de in modperl_response_handler_run (r=0x8239828, finish=1) at
mod_perl.c:905
#15 0x4032a20b in modperl_response_handler (r=0x8239828) at mod_perl.c:945
#16 0x806bbc9 in ap_run_handler (r=0x8239828) at config.c:151
#17 0x806c113 in ap_invoke_handler (r=0x8239828) at config.c:358
#18 0x80694d6 in ap_process_request (r=0x8239828) at http_request.c:246
#19 0x806539a in ap_process_http_connection (c=0x82338e8) at http_core.c:250
#20 0x8074078 in ap_run_process_connection (c=0x82338e8) at connection.c:42
#21 0x807434c in ap_process_connection (c=0x82338e8, csd=0x8233810) at connection.c:175
#22 0x806a850 in child_main (child_num_arg=1) at prefork.c:609
#23 0x806a9aa in make_child (s=0x80a1110, slot=1) at prefork.c:703
#24 0x806ab51 in perform_idle_server_maintenance (p=0x809f370) at prefork.c:838
#25 0x806aeef in ap_mpm_run (_pconf=0x809f370, plog=0x80c9418, s=0x80a1110) at
prefork.c:1039
#26 0x807050e in main (argc=9, argv=0xbffff7a4) at main.c:617
#27 0x401d72eb in __libc_start_main (main=0x806fd90 <main>, argc=9, ubp_av=0xbffff7a4,
init=0x8062778 <_init>,
fini=0x808742c <_fini>, rtld_fini=0x4000c130 <_dl_fini>, stack_end=0xbffff79c)
at ../sysdeps/generic/libc-start.c:129
This report was generated by ./REPORT on Sat Jul 17 14:48:07 2004 GMT.
-------------8<---------- End Bug Report --------------8<----------
Thanks,
- Adam Worrall
--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html