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

Reply via email to