You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Ricardo Stella <st...@rider.edu> on 2000/09/26 21:00:50 UTC
mod-perl as DSO (solaris)
Solaris 2.8
Apache 1.3.12
GCC 2.95.2
Perl 5.6.0
Enterprise 250 (64bitish)
Modperl 1.24
I can't get modperl compiled as a DSO neither via the 'flexible-method'
nor the APXS method.
The first method, seg faults.
The second method won't configure, stating I should not build mod-perl
as a DSO or compile perl with -Ubincompat5005.
My current perl was compiled with bincompat5005 (perl -V:bincompat5005
shows as 'defined')
So, is this working at all ??? Searching the archives, all I found was
related to 1.23. I also tried specifically setting
CFLAGS=-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing
when compiling apache, but did not help.
TIA.
--
------------------------------------------------------------------
Ricardo Stella O.I.T.
(609)896-5000 x7436 _suAve_ Rider University
*** Remove 'no-spam' from e-mail address before replying. ***
Re: mod-perl as DSO (solaris)
Posted by Doug MacEachern <do...@covalent.net>.
On Fri, 29 Sep 2000, Ricardo Stella wrote:
> *) Rebuild Perl with Configure -Uuselargefiles
if you do this and re-build Apache without the extra CFLAGS, that problem
will go away.
Re: mod-perl as DSO (solaris)
Posted by Ricardo Stella <st...@rider.edu>.
Might have figured out the problem, and it might be an apache issue
dealing with largefiles:
I compiled apache cleanly as:
./configure \
"--with-layout=Apache" \
"--prefix=/usr/local/apache2" \
"--enable-module=most" \
"--enable-shared=max" \
This worked. 'apachectl configtest' did not complain.
Then I compiled mod_perl as:
$ perl Makefile.PL \
USE_APXS=1 \
WITH_APXS=/path/to/bin/apxs \
EVERYTHING=1 \
And I got the following error message:
Your Perl is uselargefiles enabled, but Apache is not, suggestions:
*) Rebuild Apache with CFLAGS="-D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64"
*) Rebuild Perl with Configure -Uuselargefiles
*) Let mod_perl build Apache (USE_DSO=1 instead of USE_APXS=1)
So I cleand and compiled apache again, but enabling these CFLAGS.
Apache chocked on mod_negotiation.
Any ideas now ???
Doug MacEachern wrote:
>
> On Tue, 26 Sep 2000, Ricardo Stella wrote:
>
> > Solaris 2.8
> > Apache 1.3.12
> > GCC 2.95.2
> > Perl 5.6.0
> > Enterprise 250 (64bitish)
> > Modperl 1.24
> >
> > I can't get modperl compiled as a DSO neither via the 'flexible-method'
> > nor the APXS method.
> >
> > The first method, seg faults.
> >
> > The second method won't configure, stating I should not build mod-perl
> > as a DSO or compile perl with -Ubincompat5005.
> >
> > My current perl was compiled with bincompat5005 (perl -V:bincompat5005
> > shows as 'defined')
>
> exactly, -Ubincompat5005 will _un_ define bincompat5005, perl
> -V:bincompat5005 should report: bincompat5005='undef';
>
> this is a requirement for solaris (or any Perl where Perl's malloc is
> used, rather than system malloc) , because Perl's malloc with
> bincompat5005 will pollute malloc() and free() into the main server, then
> when mod_perl's dso is closed (it is closed/re-opened at startup), the
> everything in the main server using free/malloc now has a function pointer
> into la-la land. when you turn off bincompat5005, then Perl's malloc/free
> are namespace protected, so only Perl uses Perl's malloc.
--
------------------------------------------------------------------
Ricardo Stella O.I.T.
(609)896-5000 x7436 _suAve_ Rider University
*** Remove 'no-spam' from e-mail address before replying. ***
Re: mod-perl as DSO (solaris)
Posted by Ricardo Stella <st...@rider.edu>.
More testing but still problems...
First I downloaded GCC and make from sunfreeware.com just in case Sun's
versions are messed up (this is the ones distributed with Solaris 8).
I built apache clean first with the following criteria:
CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing"
\
./configure \
"--with-layout=Apache" \
"--prefix=/usr/local/apache2" \
"--enable-shared=max" \
"--enable-module=most" \
"--enable-rule=SHARED_CORE" \
"$@"
Then, I built perl clean with -Ubincompat5005. I did build a shared
perl though.
Then I built mod perl via APXS as a DSO with:
$ perl Makefile.PL \
USE_APXS=1 \
WITH_APXS=/path/to/bin/apxs \
EVERYTHING=1 \
[...]
$ make
$ make test
$ make install
Note that make test does not work with APXS (docs should be updated !).
But I got the followin errors:
First, with the default http.conf 'apachectl configtest' fails with:
Syntax error on line 212 of /usr/local/apache2/conf/httpd.conf:
Cannot load /usr/local/apache2/libexec/mod_negotiation.so into server:
ld.so.1:
/usr/local/apache2/bin/httpd: fatal: relocation error: file
/usr/local/apache2/libexec/mod_negotiation.so: symbol __floatdisf:
referenced symbol not found
Disabling mod_negotiation:
Syntax error on line 231 of /usr/local/apache2/conf/httpd.conf:
Cannot load /usr/local/apache2/libexec/libproxy.so into server: ld.so.1:
/usr/local/apache2/bin/httpd: fatal: relocation error: file
/usr/local/apache2/libexec/libproxy.so: symbol __floatdisf: referenced
symbol not found
And finally, disabling mod_proxy:
Syntax error on line 238 of /usr/local/apache2/conf/httpd.conf:
Cannot load /usr/local/apache2/libexec/libperl.so into server: ld.so.1:
/usr/local/apache2/bin/httpd: fatal: relocation error: file
/usr/local/apache2/libexec/libperl.so: symbol Perl_free_tmps: referenced
symbol not found
So what now ??? HELP !!!
Doug MacEachern wrote:
>
> On Tue, 26 Sep 2000, Ricardo Stella wrote:
>
> > Solaris 2.8
> > Apache 1.3.12
> > GCC 2.95.2
> > Perl 5.6.0
> > Enterprise 250 (64bitish)
> > Modperl 1.24
> >
> > I can't get modperl compiled as a DSO neither via the 'flexible-method'
> > nor the APXS method.
> >
> > The first method, seg faults.
> >
> > The second method won't configure, stating I should not build mod-perl
> > as a DSO or compile perl with -Ubincompat5005.
> >
> > My current perl was compiled with bincompat5005 (perl -V:bincompat5005
> > shows as 'defined')
>
> exactly, -Ubincompat5005 will _un_ define bincompat5005, perl
> -V:bincompat5005 should report: bincompat5005='undef';
>
> this is a requirement for solaris (or any Perl where Perl's malloc is
> used, rather than system malloc) , because Perl's malloc with
> bincompat5005 will pollute malloc() and free() into the main server, then
> when mod_perl's dso is closed (it is closed/re-opened at startup), the
> everything in the main server using free/malloc now has a function pointer
> into la-la land. when you turn off bincompat5005, then Perl's malloc/free
> are namespace protected, so only Perl uses Perl's malloc.
--
------------------------------------------------------------------
Ricardo Stella O.I.T.
(609)896-5000 x7436 _suAve_ Rider University
*** Remove 'no-spam' from e-mail address before replying. ***
Re: mod-perl as DSO (solaris)
Posted by Doug MacEachern <do...@covalent.net>.
On Tue, 26 Sep 2000, Ricardo Stella wrote:
> Solaris 2.8
> Apache 1.3.12
> GCC 2.95.2
> Perl 5.6.0
> Enterprise 250 (64bitish)
> Modperl 1.24
>
> I can't get modperl compiled as a DSO neither via the 'flexible-method'
> nor the APXS method.
>
> The first method, seg faults.
>
> The second method won't configure, stating I should not build mod-perl
> as a DSO or compile perl with -Ubincompat5005.
>
> My current perl was compiled with bincompat5005 (perl -V:bincompat5005
> shows as 'defined')
exactly, -Ubincompat5005 will _un_ define bincompat5005, perl
-V:bincompat5005 should report: bincompat5005='undef';
this is a requirement for solaris (or any Perl where Perl's malloc is
used, rather than system malloc) , because Perl's malloc with
bincompat5005 will pollute malloc() and free() into the main server, then
when mod_perl's dso is closed (it is closed/re-opened at startup), the
everything in the main server using free/malloc now has a function pointer
into la-la land. when you turn off bincompat5005, then Perl's malloc/free
are namespace protected, so only Perl uses Perl's malloc.