LWP::Simple crashes on VMSperl

J

juna

Hello all,

I have a perl script called getprint_test.pl to fetch and display a web
page:

use LWP::Simple;
getprint "http://www.google.com";

It crashes on my VMSperl with the following message:

Fatal VMS error (status=316) at P_ROOT:[000000]VMS.C;2, line 662 at
/perl_root/lib/site_perl/LWP/Simple.pm line 20.
Compilation failed in require at getprint_test.pl line 1.
BEGIN failed--compilation aborted at getprint.pl line 1.
%SYSTEM-F-IVCHAN, invalid I/O channel

I'm running OpenVMS v8.2 on an Alpha DS10. Perl v5.8.6
I tried re-installing libwww-perl versions 5.805, 5.800, 5.69, 5.51,
5.10 with the same result.

Here's a snip of mmk test on libwww-perl v5.805:
:
local/autoload........
ok
local/get.............
Fatal VMS error (status=100052) at P_ROOT:[000000]VMS.C;2, line 644 at
.../blib/lib/LWP/Simple.pm line 20.
Compilation failed in require at local/get.t line 31.
BEGIN failed--compilation aborted at local/get.t line 31.
%RMS-F-SYN, file specification syntax error
Use of uninitialized value in concatenation (.) or string at
/perl_root/lib/Test/Harness.pm line 809.
dubious
Test returned status (wstat 1024, 0x400)
Use of uninitialized value in concatenation (.) or string at
/perl_root/lib/Test/Harness.pm line 812.
(VMS status is )
local/http-get........
skipped
all skipped: Can't talk to ourself (misconfigured system)
local/http............
skipped
all skipped: Can't talk to ourself (misconfigured system)
local/protosub........
ok
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
html/form.t 122 1 0.82% 20
Use of uninitialized value in formline at (eval 5) line 3.
local/get.t 1024 ?? ?? % ??
4 tests skipped.
Failed 2/30 test scripts, 93.33% okay. 1/744 subtests failed, 99.87%
okay.
%SYSTEM-F-ABORT, abort
%MMK-F-ERRUPD, error status %X0000002C occurred when updating target
TEST

I have installed all the required prereqs:
MIME::Base64 v3.07
URI v1.35
Digest::MD5 v2.36
HTML::parser v3.50
HTML::Tagset v3.10
Bundle::libnet v1.00
Compress-Zlib v1.41

Any ideas?

Thanks in advance,

Juna
 
C

Craig A. Berry

juna said:
I have a perl script called getprint_test.pl to fetch and display a web
page:

use LWP::Simple;
getprint "http://www.google.com";

It crashes on my VMSperl with the following message:

Fatal VMS error (status=316) at P_ROOT:[000000]VMS.C;2, line 662 at
/perl_root/lib/site_perl/LWP/Simple.pm line 20.
Compilation failed in require at getprint_test.pl line 1.
BEGIN failed--compilation aborted at getprint.pl line 1.
%SYSTEM-F-IVCHAN, invalid I/O channel

I'm running OpenVMS v8.2 on an Alpha DS10. Perl v5.8.6
I tried re-installing libwww-perl versions 5.805, 5.800, 5.69, 5.51,
5.10 with the same result.

I can't reproduce this with Perl 5.8.4, LWP 5.79, which is what I
happen to have installed. The error you are getting is where it
spawns a subprocess running SHOW LOGICAL * and then reads and parses
the output in order to populate the %ENV hash. You should check your
PRCLM quota to make sure you aren't exceeding the number of
subprocesses you're allowed to create and also make sure you have
NETMBX and TMPMBX privileges since the IPC is done through a mailbox.

You might want to debug this further by seeing if you can run anything
that accesses %ENV, such as:

$ perl -e "print join qq/\n/, keys %ENV;"
*** Free account sponsored by SecureIX.com ***
*** Encrypt your Internet usage with a free VPN account from http://www.SecureIX.com ***
 
J

juna

Craig,

I tried your one-liner with all privs turned on and it gave me a fatal
error:
$ perl -e "print join qq/\n/, keys %ENV;"
Fatal VMS error (status=100052) at P_ROOT:[000000]VMS.C;2, line 644 at
-e line 1.
%RMS-F-SYN, file specification syntax error

I also ran the same thing under Perl 5.6.0 and it worked with minimum
privs.
What now?

Juna
 
J

juna

It seems that my last post didn't go through. It went like this:

Craig,

The crash goes away when I deassign the logical PERL_ENV_TABLES.
I had it defined to LNM$PROCESS because the readme.vms in
DBD-Oracle1.16 told me to.
After a little more reading on the subject, I can keep DBD-Oracle
happy and prevent the crash if I do a
define PERL_ENV_TABLES crtl_env,clisym_global,lnm$process.

Can you (or any other VMSperl expert) tell me if my fix is okay?
or am I going to break something else?

Regards,

Juna

PS. My apologies to the creator(s) of LWP::Simple. Your module
wasn't the problem, just the messenger.
 
C

Craig A. Berry

juna said:
It seems that my last post didn't go through. It went like this:

Craig,

The crash goes away when I deassign the logical PERL_ENV_TABLES.
I had it defined to LNM$PROCESS because the readme.vms in
DBD-Oracle1.16 told me to.
After a little more reading on the subject, I can keep DBD-Oracle
happy and prevent the crash if I do a
define PERL_ENV_TABLES crtl_env,clisym_global,lnm$process.

Can you (or any other VMSperl expert) tell me if my fix is okay?
or am I going to break something else?

Regards,

Juna

PS. My apologies to the creator(s) of LWP::Simple. Your module
wasn't the problem, just the messenger.

Thanks for narrowing it down to the definition of PERL_ENV_TABLES.
I've now been able to reproduce the bug in the current development
release of Perl by simply doing the following:

$ define perl_env_tables lnm$process
$ perl -e "print join qq/\n/, keys %ENV;"
Fatal VMS error (status=100052) at D0:[CRAIG.perl]vms.c;1, line 1071 at
-e line 1.
%RMS-F-SYN, file specification syntax error

So this should be fairly straightforward to fix. In the meantime, your
workaround sounds as good as any. There is of course no way to
guarantee that any particular definition of PERL_ENV_TABLES will work
for every script or module you may encounter.
*** Free account sponsored by SecureIX.com ***
*** Encrypt your Internet usage with a free VPN account from http://www.SecureIX.com ***
 
C

Craig A. Berry

Craig A. Berry said:
juna said:
It seems that my last post didn't go through. It went like this:

Craig,

The crash goes away when I deassign the logical PERL_ENV_TABLES.
I had it defined to LNM$PROCESS because the readme.vms in
DBD-Oracle1.16 told me to.
After a little more reading on the subject, I can keep DBD-Oracle
happy and prevent the crash if I do a
define PERL_ENV_TABLES crtl_env,clisym_global,lnm$process.

Can you (or any other VMSperl expert) tell me if my fix is okay?
or am I going to break something else?

Regards,

Juna

PS. My apologies to the creator(s) of LWP::Simple. Your module
wasn't the problem, just the messenger.

Thanks for narrowing it down to the definition of PERL_ENV_TABLES.
I've now been able to reproduce the bug in the current development
release of Perl by simply doing the following:

$ define perl_env_tables lnm$process
$ perl -e "print join qq/\n/, keys %ENV;"
Fatal VMS error (status=100052) at D0:[CRAIG.perl]vms.c;1, line 1071 at
-e line 1.
%RMS-F-SYN, file specification syntax error

So this should be fairly straightforward to fix. In the meantime, your
workaround sounds as good as any. There is of course no way to
guarantee that any particular definition of PERL_ENV_TABLES will work
for every script or module you may encounter.

I've just committed a patch for this issue, which turned out to just be
the removal of a wayward exclamation mark. The patch is visible here:

http://public.activestate.com/cgi-bin/perlbrowse?patch=27808

That should make it into Perl 5.8.9.
*** ***
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,981
Messages
2,570,188
Members
46,731
Latest member
MarcyGipso

Latest Threads

Top