Re: mod-perl as DSO (solaris)

2000-09-29 Thread Ricardo Stella


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

begin:vcard 
adr;dom:;;;Lawrenceville;NJ;08648;
adr:;;2083 Lawreceville Road;Lawrenceville;NJ;08648;
n:Stella;Ricardo
tel;fax:1-609-219-4994
tel;work:1-609-896-5000 x7436
x-mozilla-html:FALSE
url:http://poseidon.rider.edu
org:Rider University;O.I.T.
version:2.1
title:Manager
x-mozilla-cpt:;-9584
fn:Ricardo Stella
end:vcard



Re: mod-perl as DSO (solaris)

2000-09-29 Thread Ricardo Stella

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

begin:vcard 
adr;dom:;;;Lawrenceville;NJ;08648;
adr:;;2083 Lawreceville Road;Lawrenceville;NJ;08648;
n:Stella;Ricardo
tel;fax:1-609-219-4994
tel;work:1-609-896-5000 x7436
x-mozilla-html:FALSE
url:http://poseidon.rider.edu
org:Rider University;O.I.T.
version:2.1
title:Manager
x-mozilla-cpt:;-9584
fn:Ricardo Stella
end:vcard



Re: mod-perl as DSO (solaris)

2000-09-29 Thread Doug MacEachern

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)

2000-09-28 Thread Doug MacEachern

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.