perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Fred Moyer <f...@redhotpenguin.com>
Subject Re: Undefined symbol "Perl_pad_sv" building mp2
Date Wed, 02 Sep 2009 05:36:09 GMT
On Tue, Sep 1, 2009 at 10:14 PM, <craig@animalhead.com> wrote:
> But this is the mod_perl mailing list.  It is the place to which
> one sends reports of bugs or problems with mod_perl.  I sent such
> a report, citing this undefined symbol when building mod_perl2.

Right, but if you are mixing major versions of perl, you'll probably
encounter issues in other places.  mod_perl may be the first place you
are seeing this.

Think of it this way - would you try this same install procedure with
5.6 and 5.8?  Maybe 5.8 and 5.10 work together seamlessly, but I would
look to that as a likely source of problems.

ack is App::Ack, available from CPAN.

I've pulled down 5.10.1 but haven't had time to do a build yet.  When
I do, I'm going to install 5.10.1 a separate location from my 5.8
libraries.  Maybe it can integrate with 5.8 (the perl 5 porters are a
very talented crew), but discovering an edge case is not something on
my todo list :)

I like to keep my mod_perl setup using a different perl build than the
system perl.  That way, I won't hose my system if I want to try some
new build options for my mod_perl based perl install.

> It is hard for me to imagine that the fact that I gave the perl
> build process a list of directories to append to @INC should
> affect the presence or absence of a symbol in the resultant perl
> binary.  The only time that perl will even consult those
> directories are when it is looking for a module name that it
> doesn't find in the 5.10.1 directories.
>
> There is not much in the modules in @INC directories that is
> necessarily connected to "major versions of perl".  Of course
> it's possible that some older modules may not work as well with
> a new version as with older versions, but in this case it's the
> responsibility of the author to work out and release a new
> version that will hopefully work equally well with the older
> and newer perls.  And any module can specify the oldest version
> of perl (or other modules on which it depends) that it will
> work with.
>
> I always maintain my perl modules with -MCPAN's r command, and
> upgrade those for which new versions are available on a regular
> basis.
>
> I don't know the command 'ack' that you used in your work below,
> but it looks like it examined source files in a subdirectory of
> your home directory (~).
>
> Do you have a perl5.10.1 binary that you have used in conjunction
> with mod_perl2?
>
> If so, can you please cd to the directory that contains that
> binary (/usr/local/bin?) and enter a grep command like I used:
>
> grep Perl_pad_sv perl5*
>
> and see if your 5.10.1 binary contains the symbol?  And if so,
> how did your binary come to be?
>
> Thanks,
> cmac
>
>
> On Sep 1, 2009, at 9:32 PM, Fred Moyer wrote:
>
>> [cc'ing the list as to not break the thread]
>>
>> On Tue, Sep 1, 2009 at 7:41 PM, <craig@animalhead.com> wrote:
>>>
>>> I have always included previous perl libraries in the @INC of
>>> new builds.  And it has always worked, with the single
>>> exception of building mod_perl2 this time.  All of the perl
>>> scripts and modules on my site work well under the new 5.10.1.
>>
>> I don't know enough here to say one way or the other about this, but
>> you're mixing major versions of perl (5.10 vs 5.8)
>>
>> The Perl 5 Porters would be a good place for these issues.  But you
>> are seeing unresolved symbol errors when trying to use different major
>> versions of Perl.  That is enough circumstantial evidence that if I
>> were in your shoes, I'd use a separate 5.10 install.  But p5p could
>> probably give a more educated analysis of this.
>>
>>>
>>> Aside from the pain of re-downloading all kinds of modules
>>> as they prove to be needed over the next year or so, I know
>>> there are items in the 5.8.7 libraries from my Internet
>>> Hosting Provider, that are needed to run software from the IHP.
>>>
>>> I can certainly build a 5.10.1 without the otherlibs, and
>>> locate it somewhere else than in /usr/local/bin.  Will that
>>> process completely replace all of:
>>>
>>> /usr/local/lib/perl5/5.10.1/i386-freebsd
>>> /usr/local/lib/perl5/5.10.1
>>> /usr/local/lib/perl5/site_perl/5.10.1/i386-freebsd
>>> /usr/local/lib/perl5/site_perl/5.10.1
>>> ??
>>>
>>> If so, I suppose could copy them somewhere before the
>>> build, and copy them back after the build.
>>>
>>> In "Non-Boolean Build Options" on
>>>
>>> http://perl.apache.org/docs/2.0/user/install/install.html,
>>>
>>> I don't see a command to tell the mod_perl build process to
>>> use a particular perl.  If I say $perl_other Makefile.PL
>>> in the modperl-2.x directory, does that do it?
>>>
>>> Thanks for being there,
>>> cmac
>>>
>>>
>>> On Sep 1, 2009, at 5:58 PM, Fred Moyer wrote:
>>>
>>>> Can you please cc the list on all replies?
>>>>
>>>> On Tue, Sep 1, 2009 at 5:41 PM, <craig@animalhead.com> wrote:
>>>>>
>>>>> cd /build/perl-5.10.1/
>>>>> make veryclean
>>>>> ./Configure -Dd_dosuid
>>>>>
>>>>>
>>>>> -Dotherlibdirs=/usr/local/lib/perl5/5.8.9:/usr/local/lib/perl5/site_perl/5.8.9:/usr/local/lib/perl5/5.8.8:/usr/local/lib/perl5/site_perl/5.8.8:/usr/local/lib/perl5/5.8.7:/usr/local/lib/perl5/site_perl/5.8.7:/usr/local/lib/perl5/vendor_perl/5.8.7
>>>>> -Dmydomain=animalhead.com
>>>>
>>>> Why are you configuring 5.10.1 with 5.8.x libs?
>>>>
>>>> Can you try a build without otherlibdirs?
>>>>
>>>>>
>>>>>   change optimization '-O' to '-O2'
>>>>>   search other versions? [5.8.9 5.8.8 5.8.7] none
>>>>>   change email 'xxxxxxxx@animalhead.com' to 'mackenna@...'
>>>>>
>>>>> make
>>>>> make test                      <-- no errors for 5.10.1
>>>>> sudo make install
>>>>>
>>>>>
>>>>> On Sep 1, 2009, at 11:23 AM, Fred Moyer wrote:
>>>>>
>>>>>> On Tue, Sep 1, 2009 at 9:27 AM, <craig@animalhead.com> wrote:
>>>>>>>
>>>>>>> A bit more data on the problem reported below:
>>>>>>>
>>>>>>> /build/modperl-2.0 $ grep -r Perl_pad_sv *
>>>>>>> Binary file src/modules/perl/mod_perl.so matches
>>>>>>> /build/modperl-2.0 $ ll src/modules/perl/mod_perl.so
>>>>>>> -rwxr-xr-x  1 user  wheel  1559168 Aug 29 21:22
>>>>>>> src/modules/perl/mod_perl.so
>>>>>>> /build/modperl-2.0 $ cd /usr/local/bin
>>>>>>>
>>>>>>> /usr/local/bin $ ll perl5*
>>>>>>> lrwxr-xr-x  1 root  wheel       10 Aug 29 16:04 perl5 ->
perl5.10.1
>>>>>>> -rwxr-xr-x  3 root  wheel  1078522 Aug 30 00:52 perl5.10.1
>>>>>>> -rwxr-xr-x  2 root  wheel   949166 Nov 14  2005 perl5.8.7
>>>>>>> -rwxr-xr-x  1 root  wheel  2050866 Nov 18  2008 perl5.8.8
>>>>>>> -rwxr-xr-x  1 root  wheel   951373 Jan  7  2009 perl5.8.9
>>>>>>> /usr/local/bin $ grep -r Perl_pad_sv perl*
>>>>>>> Binary file perl5.8.7 matches
>>>>>>> Binary file perl5.8.8 matches
>>>>>>> Binary file perl5.8.9 matches
>>>>>>> /usr/local/bin $
>>>>>>>
>>>>>>> So the symbol in the error message is wanted by the newly-built
>>>>>>> mod_perl, but perl 5.10.1 does not include it.
>>>>>>>
>>>>>>> Yes that's exactly what the error message says, but the mailing
>>>>>>> list is so quiet that I wonder if my filters have started eating
>>>>>>> its emails...
>>>>>>
>>>>>> Perl_pad_sv is in there.  How did you install 5.10.1?
>>>>>>
>>>>>> phred@harpua ~/perl-5.10.1 $ ack Perl_pad_sv
>>>>>> embed.h
>>>>>> 638:#define pad_sv                      Perl_pad_sv
>>>>>> 2958:#define pad_sv(a)          Perl_pad_sv(aTHX_ a)
>>>>>>
>>>>>> makedef.pl
>>>>>> 627:                Perl_pad_sv
>>>>>>
>>>>>> pad.c
>>>>>> 927:Perl_pad_sv(pTHX_ PADOFFSET po)
>>>>>>
>>>>>> proto.h
>>>>>> 2386:PERL_CALLCONV SV*  Perl_pad_sv(pTHX_ PADOFFSET po);
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> cmac
>>>>>>>
>>>>>>>> On Aug 30, 2009, at 11:49 AM, Fred Moyer wrote:
>>>>>>>>
>>>>>>>>> On Sat, Aug 29, 2009 at 9:43 PM, <craig@animalhead.com>
wrote:
>>>>>>>>>>
>>>>>>>>>> -------------8<---------- Start Bug Report
>>>>>>>>>> ------------8<----------
>>>>>>>>>> 1. Problem Description:
>>>>>>>>>>
>>>>>>>>>> I have upgraded to Apache 2.2.13 and Perl 5.10.1.
 Both seem to be
>>>>>>>>>> working
>>>>>>>>>> OK,
>>>>>>>>>> although Apache with using my old mod_perl 2.04 that
uses perl
>>>>>>>>>> 5.8.9.
>>>>>>>>>
>>>>>>>>> Have you rebuilt your mod_perl 2.0.4 instance from scratch
using
>>>>>>>>> 5.10.1?  Undefined symbol warnings like this usually
mean you are
>>>>>>>>> trying to use a version of mod_perl that has been built
with
>>>>>>>>> another
>>>>>>>>> perl binary.
>>>>>>>>>
>>>>>>>>> Suggest running make clean, then:
>>>>>>>>>
>>>>>>>>> perl Makefile.PL MP_APXS=/path/to/my/httpd/apxs
>>>>>>>>> make
>>>>>>>>> make test
>>>>>>>>
>>>>>>>> Yes, that is pretty much exactly what I've done.  Here is
the
>>>>>>>> command
>>>>>>>> file
>>>>>>>> (that precedes make):
>>>>>>>>
>>>>>>>> #! /bin/sh
>>>>>>>> CFLAGS="-DVERIO -DVERIO_VPS"; export CFLAGS
>>>>>>>> LDFLAGS="-L/usr/local/lib"; export LDFLAGS
>>>>>>>> perl Makefile.PL MP_APXS=/usr/local/apache2/bin/apxs
>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> make test in both the release mod_perl 2.0.4 and
the latest
>>>>>>>>>> snapshot
>>>>>>>>>> 2.0.5
>>>>>>>>>> gives the same error:
>>>>>>>>>>
>>>>>>>>>> $ make test
>>>>>>>>>> cd "src/modules/perl" && make
>>>>>>>>>> /usr/bin/perl -Iblib/arch -Iblib/lib  t/TEST -clean
>>>>>>>>>> APACHE_TEST_GROUP= APACHE_TEST_HTTPD= APACHE_TEST_PORT=
>>>>>>>>>> APACHE_TEST_USER=
>>>>>>>>>> APACHE_TEST_APXS=  /usr/bin/perl -Iblib/arch -Iblib/lib
 t/TEST
>>>>>>>>>> -bugreport
>>>>>>>>>> -verbose=0
>>>>>>>>>> /usr/local/apache2/bin/httpd  -d /build/modperl-2.0/t
-f
>>>>>>>>>> /build/modperl-2.0/t/conf/httpd.conf -D APACHE2
>>>>>>>>>> using Apache/2.2.13 (prefork MPM)
>>>>>>>>>>
>>>>>>>>>> waiting 120 seconds for server to start: .httpd:
Syntax error on
>>>>>>>>>> line
>>>>>>>>>> 17
>>>>>>>>>> of
>>>>>>>>>> /build/modperl-2.0/t/conf/httpd.conf: Cannot load
>>>>>>>>>> /build/modperl-2.0/src/modules/perl/mod_perl.so into
server:
>>>>>>>>>> /build/modperl-2.0/src/modules/perl/mod_perl.so:
Undefined symbol
>>>>>>>>>> "Perl_pad_sv"
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> 2. Used Components and their Configuration:
>>>>>>>>>>
>>>>>>>>>> *** mod_perl version 2.000005
>>>>>>>>>>
>>>>>>>>>> *** using /build/modperl-2.0/lib/Apache2/BuildConfig.pm
>>>>>>>>>>
>>>>>>>>>> *** Makefile.PL options:
>>>>>>>>>>  MP_APR_LIB     => aprext
>>>>>>>>>>  MP_APXS        => /usr/local/apache2/bin/apxs
>>>>>>>>>>  MP_COMPAT_1X   => 1
>>>>>>>>>>  MP_GENERATE_XS => 1
>>>>>>>>>>  MP_LIBNAME     => mod_perl
>>>>>>>>>>  MP_USE_DSO     => 1
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> *** /usr/local/apache2/bin/httpd -V
>>>>>>>>>> Server version: Apache/2.2.13 (Unix)
>>>>>>>>>> Server built:   Aug 29 2009 16:57:40
>>>>>>>>>> Server's Module Magic Number: 20051115:23
>>>>>>>>>> Server loaded:  APR 1.3.8, APR-Util 1.3.9
>>>>>>>>>> Compiled using: APR 1.3.8, APR-Util 1.3.9
>>>>>>>>>> Architecture:   32-bit
>>>>>>>>>> Server MPM:     Prefork
>>>>>>>>>>  threaded:     no
>>>>>>>>>>  forked:     yes (variable process count)
>>>>>>>>>> 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_FLOCK_SERIALIZE
>>>>>>>>>>  -D APR_USE_PTHREAD_SERIALIZE
>>>>>>>>>>  -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
>>>>>>>>>>  -D APR_HAS_OTHER_CHILD
>>>>>>>>>>  -D AP_HAVE_RELIABLE_PIPED_LOGS
>>>>>>>>>>  -D DYNAMIC_MODULE_LIMIT=128
>>>>>>>>>>  -D HTTPD_ROOT="/usr/local/apache2"
>>>>>>>>>>  -D SUEXEC_BIN="/usr/local/apache2/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"
>>>>>>>>>>
>>>>>>>>>> *** /usr/bin/ldd /usr/local/apache2/bin/httpd
>>>>>>>>>> /usr/local/apache2/bin/httpd:
>>>>>>>>>>    libz.so.3 => /lib/libz.so.3 (0x28209000)
>>>>>>>>>>    libm.so.4 => /lib/libm.so.4 (0x2821a000)
>>>>>>>>>>    libpcre.so.0 => /usr/local/lib/libpcre.so.0
(0x28230000)
>>>>>>>>>>    libaprutil-1.so.3 => /usr/local/apache2/lib/libaprutil-1.so.3
>>>>>>>>>> (0x2825c000)
>>>>>>>>>>    libexpat.so.6 => /usr/local/lib/libexpat.so.6
(0x2827c000)
>>>>>>>>>>    libapr-1.so.3 => /usr/local/apache2/lib/libapr-1.so.3
>>>>>>>>>> (0x2829d000)
>>>>>>>>>>    libcrypt.so.3 => /lib/libcrypt.so.3 (0x282c5000)
>>>>>>>>>>    libpthread.so.2 => /lib/libpthread.so.2 (0x282dd000)
>>>>>>>>>>    libc.so.6 => /lib/libc.so.6 (0x28301000)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> *** (apr|apu)-config linking info
>>>>>>>>>>
>>>>>>>>>>  -L/usr/local/apache2/lib -laprutil-1     -lexpat
-L/usr/local/lib
>>>>>>>>>>  -L/usr/local/apache2/lib -lapr-1 -lcrypt  -lpthread
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> *** /usr/local/bin/perl -V
>>>>>>>>>> Summary of my perl5 (revision 5 version 10 subversion
1)
>>>>>>>>>> configuration:
>>>>>>>>>>
>>>>>>>>>>  Platform:
>>>>>>>>>>  osname=freebsd, osvers=6.3-release, archname=i386-freebsd
>>>>>>>>>>  uname='freebsd animalhead.com 6.3-release freebsd
6.3-release #3:
>>>>>>>>>> fri
>>>>>>>>>> jan
>>>>>>>>>> 23 16:43:41 mst 2009 root@fc:usrsrcsysi386compilevkern
i386 '
>>>>>>>>>>  config_args='-Dd_dosuid
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -Dotherlibdirs=/usr/local/lib/perl5/5.8.9:/usr/local/lib/perl5/5.8.8:/usr/local/lib/perl5/5.8.7
>>>>>>>>>> -Dvendorprefix=/usr/local -Dmydomain=animalhead.com'
>>>>>>>>>>  hint=recommended, useposix=true, d_sigaction=define
>>>>>>>>>>  useithreads=undef, usemultiplicity=undef
>>>>>>>>>>  useperlio=define, d_sfio=undef, uselargefiles=define,
>>>>>>>>>> usesocks=undef
>>>>>>>>>>  use64bitint=undef, use64bitall=undef, uselongdouble=undef
>>>>>>>>>>  usemymalloc=n, bincompat5005=undef
>>>>>>>>>>  Compiler:
>>>>>>>>>>  cc='cc', ccflags ='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H
>>>>>>>>>> -fno-strict-aliasing -pipe -I/usr/local/include',
>>>>>>>>>>  optimize='-O',
>>>>>>>>>>  cppflags='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H
>>>>>>>>>> -fno-strict-aliasing
>>>>>>>>>> -pipe -I/usr/local/include'
>>>>>>>>>>  ccversion='', gccversion='3.4.6 [FreeBSD] 20060305',
>>>>>>>>>> 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 ='-Wl,-E  -L/usr/local/lib'
>>>>>>>>>>  libpth=/usr/lib /usr/local/lib
>>>>>>>>>>  libs=-lgdbm -lm -lcrypt -lutil -lc
>>>>>>>>>>  perllibs=-lm -lcrypt -lutil -lc
>>>>>>>>>>  libc=, so=so, useshrplib=false, libperl=libperl.a
>>>>>>>>>>  gnulibc_version=''
>>>>>>>>>>  Dynamic Linking:
>>>>>>>>>>  dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef,
ccdlflags=' '
>>>>>>>>>>  cccdlflags='-DPIC -fPIC', lddlflags='-shared  -L/usr/local/lib'
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Characteristics of this binary (from libperl):
>>>>>>>>>>  Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP
>>>>>>>>>>                    USE_LARGE_FILES USE_PERLIO
>>>>>>>>>>  Built under freebsd
>>>>>>>>>>  Compiled at Aug 29 2009 20:24:18
>>>>>>>>>>  %ENV:
>>>>>>>>>>  PERL_LWP_USE_HTTP_10="1"
>>>>>>>>>>  @INC:
>>>>>>>>>>  /usr/local/lib/perl5/5.10.1/i386-freebsd
>>>>>>>>>>  /usr/local/lib/perl5/5.10.1
>>>>>>>>>>  /usr/local/lib/perl5/site_perl/5.10.1/i386-freebsd
>>>>>>>>>>  /usr/local/lib/perl5/site_perl/5.10.1
>>>>>>>>>>  /usr/local/lib/perl5/site_perl/5.8.9
>>>>>>>>>>  /usr/local/lib/perl5/site_perl/5.8.8
>>>>>>>>>>  /usr/local/lib/perl5/site_perl/5.8.7
>>>>>>>>>>  /usr/local/lib/perl5/site_perl
>>>>>>>>>>  /usr/local/lib/perl5/vendor_perl/5.10.1/i386-freebsd
>>>>>>>>>>  /usr/local/lib/perl5/vendor_perl/5.10.1
>>>>>>>>>>  /usr/local/lib/perl5/vendor_perl/5.8.7
>>>>>>>>>>  /usr/local/lib/perl5/vendor_perl
>>>>>>>>>>  /usr/local/lib/perl5/5.8.9/i386-freebsd
>>>>>>>>>>  /usr/local/lib/perl5/5.8.9
>>>>>>>>>>  /usr/local/lib/perl5/5.8.8/i386-freebsd
>>>>>>>>>>  /usr/local/lib/perl5/5.8.8
>>>>>>>>>>  /usr/local/lib/perl5/5.8.7/i386-freebsd
>>>>>>>>>>  /usr/local/lib/perl5/5.8.7
>>>>>>>>>>  .
>>>>>>>>>>
>>>>>>>>>> *** Packages of interest status:
>>>>>>>>>>
>>>>>>>>>> Apache2            : -
>>>>>>>>>> Apache2::Request   : -
>>>>>>>>>> CGI                : 3.45
>>>>>>>>>> ExtUtils::MakeMaker: 6.48, 6.54, 6.55_02
>>>>>>>>>> LWP                : 5.831
>>>>>>>>>> mod_perl           : -
>>>>>>>>>> mod_perl2          : -
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> 3. This is the core dump trace: (if you get a core
dump):
>>>>>>>>>>
>>>>>>>>>>  [CORE TRACE COMES HERE]
>>>>>>>>>>
>>>>>>>>>> This report was generated by t/REPORT on Sun Aug
30 04:28:22 2009
>>>>>>>>>> GMT.
>>>>>>>>>>
>>>>>>>>>> -------------8<---------- End Bug Report
>>>>>>>>>> --------------8<----------
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>
>>>
>
>

Mime
View raw message