You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Christian Gilmore <cg...@tivoli.com> on 2001/02/08 01:29:04 UTC

RE: mod_perl as DSO on AIX with perl-5.6

Recompiling with dl_dlopen.xs instead of dl_aix.xs caused 49 of the 180
self-tests to fail. I recompiled with debugging turned on and ran against
GDB. Here's the result followed by the output of './perl -I./lib -V'.
Jens, did you have success running with dl_dlopen.xs without other
modification?

Regards,
Christian

web1-jr% gdb ./perl
GNU gdb 5.0
Copyright 2000 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you
are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for
details.
This GDB was configured as "rs6000-ibm-aix4.3.3.0"...
(gdb) set args t/lib/socket.t
(gdb) run
Starting program: /home/cgilmore/src/perl-5.6.0/./perl t/lib/socket.t

Program received signal SIGSEGV, Segmentation fault.
0xd1cc7534 in boot_Socket (cv=0x200851a8) at Socket.c:1221
1221    Socket.c: No such file or directory.
(gdb) bt
#0  0xd1cc7534 in boot_Socket (cv=0x200851a8) at Socket.c:1221
#1  0x100b2818 in Perl_pp_entersub () at pp_hot.c:2533
#2  0x10091064 in Perl_runops_debug () at run.c:56
#3  0x100013ac in S_call_body (myop=0x2ff22078, is_eval=0) at perl.c:1761
#4  0x100064cc in Perl_call_sv (sv=0x20038888, flags=6) at perl.c:1677
#5  0x100012f4 in S_call_list_body (cv=0x20038888) at perl.c:3600
#6  0x10008534 in Perl_call_list (oldscope=1, paramList=0x20038804)
    at perl.c:3528
#7  0x100993f4 in Perl_newATTRSUB (floor=78, o=0x2003c338, proto=0x0,
    attrs=0x0, block=0x2003c478) at op.c:4641
#8  0x10099f3c in Perl_utilize (aver=1, floor=78, version=0x0,
id=0x2002bb78,
    arg=0x0) at op.c:3162
#9  0x10092b70 in Perl_yyparse () at perly.y:403
#10 0x100023dc in S_parse_body (env=0x0,
    xsinit=0x20020b18 <PL_no_wrongref+5736>) at perl.c:1249
#11 0x10008c30 in perl_parse (my_perl=0x2002b338,
    xsinit=0x20020b18 <PL_no_wrongref+5736>, argc=2, argv=0x2ff229c4,
env=0x0)
    at perl.c:857
#12 0x10001070 in main (argc=2, argv=0x2ff229c4, env=0x2ff229d0)
    at perlmain.c:50
#13 0x100001dc in __start ()



web1-jr% ./perl -I./lib -V
Summary of my perl5 (revision 5.0 version 6 subversion 0) configuration:
  Platform:
    osname=aix, osvers=4.3.3.0, archname=aix
    uname='aix web1-jr 3 4 000528df4c00 '
    config_args='-d'
    hint=previous, useposix=true, d_sigaction=define
    usethreads=undef use5005threads=undef useithreads=undef
usemultiplicity=undef
    useperlio=undef d_sfio=undef uselargefiles=undef
    use64bitint=undef use64bitall=undef uselongdouble=undef usesocks=undef
  Compiler:
    cc='cc', optimize='-g', gccversion=
    cppflags=''
    ccflags
='-DDEBUGGING -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=1638
4 -I/usr/vac/include -I/opt/gnu/include'
    stdchar='unsigned char', d_stdstdio=define, usevfork=false
    intsize=4, longsize=4, ptrsize=4, doublesize=8
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=4
    alignbytes=8, usemymalloc=n, prototype=define
  Linker and Libraries:
    ld='ld', ldflags ='-L/usr/vac/lib -L/opt/gnu/lib'
    libpth=/opt/gnu/lib /usr/vac/lib /lib /usr/lib /usr/ccs/lib


  libs=-lbind -lnsl -ldbm -ldl -lld -lm -lC -lc -lcrypt -lbsd -lPW -liconv
    libc=, so=a, useshrplib=false, libperl=libperl.a
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef,
cdlflags='  -bE:/opt/gnu/depot/perl-5.6.0/lib/5.6.0/aix/CORE/perl.exp -bE:
/opt/gnu/depot/perl-5.6.0/lib/5.6.0/aix/CORE/perl.exp -bE:/opt/gnu/depot/p
erl-5.6.0/lib/5.6.0/aix/CORE/perl.exp -bE:/opt/gnu/depot/perl-5.6.0/lib/5.
6.0/aix/CORE/perl.exp'
    cccdlflags=' ',
lddlflags='-bhalt:4 -bM:SRE -bI:$(PERL_INC)/perl.exp -bE:$(BASEEXT).exp -b
noentry -lC -lc -L/opt/gnu/lib -L/usr/vac/lib'


Characteristics of this binary (from libperl):
  Compile-time options: DEBUGGING
  Built under aix
  Compiled at Feb  7 2001 18:22:19
  @INC:
    ./lib
    /opt/gnu/depot/perl-5.6.0/lib/5.6.0/aix
    /opt/gnu/depot/perl-5.6.0/lib/5.6.0
    /opt/gnu/depot/perl-5.6.0/lib/site_perl/5.6.0/aix
    /opt/gnu/depot/perl-5.6.0/lib/site_perl/5.6.0
    /opt/gnu/depot/perl-5.6.0/lib/site_perl
    .


> -----Original Message-----
> From: Jens-Uwe Mager [mailto:jum@helios.de]
> Sent: Sunday, January 28, 2001 8:46 AM
> To: Christian Gilmore
> Cc: Modperl Mailing List (E-mail)
> Subject: Re: mod_perl as DSO on AIX with perl-5.6
>
>
> On Sat, Jan 27, 2001 at 01:42:44PM -0600, Christian Gilmore wrote:
>
> > Hey. I see in mod_perl's INSTALL document that there's a
> required patch
> > for DynaLoader if you intend to run mod_perl as DSO on AIX
> (4.3) with
> > perl-5.005_3. Is patching required for 5.6? If so, will the
> same patch in
> > the INSTALL doc apply?
>
> Unfortunately this is a bit complicated and it depends upon
> AIX version.
> For AIX versions before 4.3 yes, and I posted the patch on this list a
> while ago. But as you are using AIX 4.3 this is not required
> any more if
> you are careful upon configuring perl. The Configure script
> on AIX will
> offer to use the pre-AIX 4.3 specific dynamic loader dl_aix.xs, but do
> not use that, use dl_dlopen.xs instead. Apache does that configuration
> decision automatically nowadays.
>
> The point is that on earlier AIX versions it was needed to
> use a set of
> emulation routines to emulate the dlopen family of routines
> with the AIX
> native facilities. In later versions IBM added dlopen so the emulation
> is not necessary. Indeed it appears that if both the AIX native dlopen
> (referenced from Apache) and the emulation one (referenced
> from Perl) is
> used in one process a conflict arises causing Apache module loads to
> fail.
>
> --
> Jens-Uwe Mager
>
> HELIOS Software GmbH
> Steinriede 3
> 30827 Garbsen
> Germany
>
> Phone:		+49 5131 709320
> FAX:		+49 5131 709325
> Internet:	jum@helios.de
>


RE: mod_perl as DSO on AIX with perl-5.6

Posted by Christian Gilmore <cg...@tivoli.com>.
Woohoo! Jens, you rock. apache/mod_perl/DSO finally runs without immediate
segfault for me on aix.

Thanks,
Christian

> -----Original Message-----
> From: Jens-Uwe Mager [mailto:jum@helios.de]
> Sent: Wednesday, February 21, 2001 7:30 AM
> To: Christian Gilmore
> Cc: 'Jens-Uwe Mager'; 'Modperl Mailing List (E-mail)'
> Subject: Re: mod_perl as DSO on AIX with perl-5.6
>
>
> On Wed, Feb 07, 2001 at 06:29:04PM -0600, Christian Gilmore wrote:
> > Recompiling with dl_dlopen.xs instead of dl_aix.xs caused
> 49 of the 180
> > self-tests to fail. I recompiled with debugging turned on
> and ran against
> > GDB. Here's the result followed by the output of './perl
> -I./lib -V'.
> > Jens, did you have success running with dl_dlopen.xs without other
> > modification?
>
> Oops, gotcha. I had to do one change to a script in the perl
> distribution:
>
> --- perl-5.6.0/makedef.pl.orig	Wed Feb 21 13:17:34 2001
> +++ perl-5.6.0/makedef.pl	Wed Feb 21 13:17:56 2001
> @@ -165,7 +165,7 @@
>  ---EOP---
>  }
>  elsif ($PLATFORM eq 'aix') {
> -    print "#!\n";
> +    print "#! .\n";
>  }
>
>  my %skip;
>
> --
> Jens-Uwe Mager
>
> HELIOS Software GmbH
> Steinriede 3
> 30827 Garbsen
> Germany
>
> Phone:		+49 5131 709320
> FAX:		+49 5131 709325
> Internet:	jum@helios.de
>


Re: mod_perl as DSO on AIX with perl-5.6

Posted by Jens-Uwe Mager <ju...@helios.de>.
On Wed, Feb 07, 2001 at 06:29:04PM -0600, Christian Gilmore wrote:
> Recompiling with dl_dlopen.xs instead of dl_aix.xs caused 49 of the 180
> self-tests to fail. I recompiled with debugging turned on and ran against
> GDB. Here's the result followed by the output of './perl -I./lib -V'.
> Jens, did you have success running with dl_dlopen.xs without other
> modification?

Oops, gotcha. I had to do one change to a script in the perl
distribution:

--- perl-5.6.0/makedef.pl.orig	Wed Feb 21 13:17:34 2001
+++ perl-5.6.0/makedef.pl	Wed Feb 21 13:17:56 2001
@@ -165,7 +165,7 @@
 ---EOP---
 }
 elsif ($PLATFORM eq 'aix') {
-    print "#!\n";
+    print "#! .\n";
 }
 
 my %skip;

-- 
Jens-Uwe Mager

HELIOS Software GmbH
Steinriede 3
30827 Garbsen
Germany

Phone:		+49 5131 709320
FAX:		+49 5131 709325
Internet:	jum@helios.de