Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: ModPerl: ModPerl

Fwd: Undefined symbol "Perl_pad_sv" building mp2

 

 

ModPerl modperl RSS feed   Index | Next | Previous | View Threaded


craig at animalhead

Sep 1, 2009, 7:47 PM

Post #1 of 3 (588 views)
Permalink
Fwd: Undefined symbol "Perl_pad_sv" building mp2

>
> 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.
>
> 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 [at] animalhead> 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 [at] animalhead' 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 [at] animalhead> 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 [at] harpu ~/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 [at] animalhead> 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 [at] f: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<----------
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>
>>>
>


mpeters at plusthree

Sep 2, 2009, 6:21 AM

Post #2 of 3 (541 views)
Permalink
Re: Fwd: Undefined symbol "Perl_pad_sv" building mp2 [In reply to]

craig [at] animalhead 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.

Pure Perl modules should work between versions (they might have some new
warnings, but they should work), but anything with XS (C code) isn't guaranteed
to work across major versions. So when you've upgraded between say 5.8.2 and
5.8.7 you wouldn't need to re-install. But when upgrading from 5.8.X to 5.10.X
you will need to re-install.

>> 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.

If you need 5.8.7 libs that you can't re-compile against 5.10.1 then just stick
with 5.8.7.

>> 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?

Yes, the perl you use when you run the Makefile.PL is the one that's used in the
compilation of mod_perl.

--
Michael Peters
Plus Three, LP


craig at animalhead

Sep 2, 2009, 9:22 AM

Post #3 of 3 (553 views)
Permalink
Re: Undefined symbol "Perl_pad_sv" building mp2 [In reply to]

On Sep 2, 2009, at 6:21 AM, Michael Peters wrote:

> craig [at] animalhead 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.
>
> Pure Perl modules should work between versions (they might have
> some new warnings, but they should work), but anything with XS (C
> code) isn't guaranteed to work across major versions. So when
> you've upgraded between say 5.8.2 and 5.8.7 you wouldn't need to re-
> install. But when upgrading from 5.8.X to 5.10.X you will need to
> re-install.

If you aren't up to being rigorous, be lucky: everything (except
mod_perl build, see crossed email with "resolved" in title) works
for me so far. Hopefully most modules for which this would be an
issue are covered by upgrades, which get installed at the top
(5.10.1) level.

What does make problems is that CPAN sometimes deletes modules
in an earlier-version directory when installing a new module
in the current-version directory. This tends to break the
lower-level perl w/r/t module availability. So I copy the
earlier-version directories before an upgrade session, and
run a "sync" program thereafter.
>
>>> 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.
>
> If you need 5.8.7 libs that you can't re-compile against 5.10.1
> then just stick with 5.8.7.
>
I had a case like that in the current transition: my IHP's CGI
control panel works under 5.8.9 but logs taint warnings under
5.10.1. So I just ran a script that changed all of its bang
lines to 5.8.9. Sometimes one has to admit that life is too
short to tilt with every problem.

>>> 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?
>
> Yes, the perl you use when you run the Makefile.PL is the one
> that's used in the compilation of mod_perl.
>
Thank you for this valuable information! It should be in the
mod-perl documentation. (Bet it's not in there now, I looked
pretty hard.) Hope someone who can do that reads this suggestion.
> --
> Michael Peters
> Plus Three, LP

ModPerl modperl RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.