You are viewing a plain text version of this content. The canonical link for it is here.
Posted to embperl@perl.apache.org by Michael Blakeley <mi...@blakeley.com> on 2000/12/18 05:45:03 UTC

possible 1.3 bug(s)

I've recently been installing 1.3 on a fresh system (Perl 5.6.0, 
Linux 2.2.16) and noticed some problems.

First, embpexec.pl doesn't seem to be installed by default when I run 
'make install'. Previous versions installed it under HTML, so I just 
copied it there.

After doing that, I created a hello.epl:

<html>
<head>
</head>
<body>
<p>[+ "hello" +]
</body>
</html>

And running
	$ /home/mblakele/lib/site_perl/i386-linux/HTML/embpexec.pl hello.epl
produces the output you'd expect:

<html>
<head>
</head>
<body>
<p>hello
</body>
</html>

But when I try to run Embperl in my sandbox (httpd -X) I get nothing 
- not even headers - httpd exits with no message. By adding

PERL5OPT=-d
PERLDB_OPTS='NonStop=1 AutoTrace=0'

I see the following exit message:

Signal SEGV at 
/home/mblakele/lib/site_perl/i386-linux/HTML/Embperl.pm line 1193
         HTML::Embperl::handler('*HTML::Embperl::DOC::_1::dbgCmd', 
'*HTML::Embperl::DOC::_1::dbgAllCmds', 'Apache=SCALAR(0x83728e4)') 
called at /dev/null line 0
         require 0 called at /dev/null line 0

My httpd.conf contains

SetEnv EMBPERL_DEBUG 2797
SetEnv EMBPERL_LOG /tmp/mblakele/embperl.log

<Files *.epl>
         SetHandler  perl-script
         PerlHandler HTML::Embperl
         Options ExecCGI
</Files>

AddType text/html .epl

The embperl log shows

[19178]REQ:  Embperl 1.3.0 starting... Sun Dec 17 19:41:03 2000

[19178]REQ:  No Safe Eval  All Opcode allowed   mode = mod_perl (3)
[19178]REQ:  Package = HTML::Embperl::DOC::_1
[19178]Formdata... length = 0
[19178]Using APACHE for output...
[19178]Reading /home/mblakele/jamlist/html/hello.epl as input using PerlIO ...
[19178]SRC: Line 1: <html>
[19178]SRC: Line 1: <head>
[19178]SRC: Line 2: </head>
[19178]SRC: Line 3: <body>
[19178]CMD:  Cmd = 'body'
[19178]SRC: Line 4: <p>[+ "hello" +]
[19178]SRC: Line 5: [+ "hello" +]

So it looks like I'm getting a SEGV just as Embperl tries to eval that string.

I'm not sure if this is related, but... make test succeeded for 
offline tests, but the mod_perl testing exited with

Syntax error on line 40 of 
/tmp/mblakele/cpan-build/HTML-Embperl-1.3.0/test/conf/httpd.conf:
Can't locate lib.pm in @INC (@INC contains: 
/usr/local/lib/perl5/5.6.0/i586-linux /usr/local/lib/perl5/5.6.0 
/usr/local/lib/perl5/site_perl/5.6.0/i586-linux 
/usr/local/lib/perl5/site_perl/5.6.0 /usr/local/lib/perl5/site_perl 
/tmp/mblakele/cpan-build/HTML-Embperl-1.3.0/test/ 
/tmp/mblakele/cpan-build/HTML-Embperl-1.3.0/test/lib/perl) at 
/tmp/mblakele/cpan-build/HTML-Embperl-1.3.0/test/conf/startup.pl line 
2.
BEGIN failed--compilation aborted at 
/tmp/mblakele/cpan-build/HTML-Embperl-1.3.0/test/conf/startup.pl line 
2.
Compilation failed in require at (eval 1) line 1.

That line is
     use lib qw{ . } ;

But I can run that just fine from the command line, with perl -e. I 
suspect an environment problem - perl -V says

   %ENV:
PERL5LIB="/home/mblakele/lib/site_perl:/home/mblakele/lib/site_perl/i386-linux:/home/mblakele/lib/site_perl/i386-linux/auto:/usr/lib/perl5:/usr/lib/perl5/i386-linux:/usr/lib/perl5/site_perl/i386-linux:/usr/lib/perl5/site_perl"
   @INC:
     /home/mblakele/lib/site_perl/i386-linux
     /home/mblakele/lib/site_perl
     /home/mblakele/lib/site_perl/i386-linux
     /home/mblakele/lib/site_perl/i386-linux/auto
     /usr/lib/perl5/i386-linux
     /usr/lib/perl5
     /usr/lib/perl5/i386-linux
     /usr/lib/perl5/site_perl/i386-linux
     /usr/lib/perl5/site_perl/i386-linux
     /usr/lib/perl5/site_perl
     /usr/lib/perl5/i386-linux
     /usr/lib/perl5
     /usr/lib/perl5/site_perl/i386-linux
     /usr/lib/perl5/site_perl
     /usr/lib/perl5/site_perl
     .

So it seems like make test is somehow overwriting my @INC (the 
/home/mblakele stuff is missing in the error message, and so are the 
i386-linux dirs) - or at least ignoring %ENV. But I don't see 
anything like this in test.pl

I also tried the debugger:

$ perl -d test.pl -h
Default die handler restored.

Loading DB routines from perl5db.pl version 1.07
Editor support available.

Enter h or `h h' for help, or `man perldebug' for more help.

loading...                    main::(test.pl:6):        @testdata = (
main::(test.pl:7):          'ascii' => { },
main::(test.pl:8):          'pure.htm' => { },
main::(test.pl:9):          'plain.htm' => {
main::(test.pl:10):             repeat => 3,
   DB<1> p @INC
/home/mblakele/lib/site_perl/i386-linux/home/mblakele/lib/site_perl/home/mblakele/lib/site_perl/i386-linux/home/mblakele/lib/site_perl/i386-linux/auto/usr/lib/perl5/i386-linux/usr/lib/perl5/usr/lib/perl5/i386-linux/usr/lib/perl5/site_perl/i386-linux/usr/lib/perl5/site_perl/i386-linux/usr/lib/perl5/site_perl/usr/lib/perl5/i386-linux/usr/lib/perl5/usr/lib/perl5/site_perl/i386-linux/usr/lib/perl5/site_perl/usr/lib/perl5/site_perl.

...which looks fine. So I'm lost... Any idea why @INC is changing as 
test.pl runs? Or why I can't get mod_perl to execute Embperl?

thanks,
-- Mike

Re: possible 1.3 bug(s)

Posted by Gerald Richter <ri...@ecos.de>.
> I've recently been installing 1.3 on a fresh system (Perl 5.6.0,
> Linux 2.2.16) and noticed some problems.
>
> First, embpexec.pl doesn't seem to be installed by default when I run
> 'make install'. Previous versions installed it under HTML, so I just
> copied it there.
>

MakeMaker does this install. I guess the new MakeMaker version of Perl 5.6
doesn't do this anymore.

>
> I'm not sure if this is related, but... make test succeeded for
> offline tests, but the mod_perl testing exited with
>

I think we should first get your make test run. That would make it much more
easier to debug the rest (if it still fails afterwards)

>
> So it seems like make test is somehow overwriting my @INC (the
> /home/mblakele stuff is missing in the error message, and so are the
> i386-linux dirs) - or at least ignoring %ENV.

If you ask me, I would say you have two different Perl installed on your
system and the one you compiled Embperl with is not the one you compiled
mod_perl with. mod_perl set the @INC to the pathes of the Perl ist was
compiled with. Please first make sure make test of modperl works, before we
continue

Gerald

-------------------------------------------------------------
Gerald Richter    ecos electronic communication services gmbh
Internetconnect * Webserver/-design/-datenbanken * Consulting

Post:       Tulpenstrasse 5         D-55276 Dienheim b. Mainz
E-Mail:     richter@ecos.de         Voice:    +49 6133 925151
WWW:        http://www.ecos.de      Fax:      +49 6133 925152
-------------------------------------------------------------