-
Notifications
You must be signed in to change notification settings - Fork 571
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Error accessing remote file on OpenVMS using Perl 5.8.6 #13527
Comments
From darlene@integ.comI am trying to do an opendir from on a remote file on an Integrity OpenVMS 8.4 with the following: Fatal VMS error (status=2312) at P_ROOT:[000000]VMS.C;2, line 6705 at ops$perl:remote_test.pl line 56. The command ("dka0:[soms_ops4.SCHED.DOMAINS]" works locally. This command worked on Alpha 8.3 using Perl 5. |
From @craigberryOn Tue, Jan 14, 2014 at 8:58 AM, Darlene Riddle
Can you please post the output of: $ perl -"V" Is there any way you can create a reproducer containing only the Is there any way you can try this with a recent version of Perl (5.8.6 |
The RT System itself - Status changed from 'new' to 'open' |
From darlene@integ.comSincerely, -----Original Message----- On Tue, Jan 14, 2014 at 8:58 AM, Darlene Riddle <perlbug-followup@perl.org> wrote:
Can you please post the output of: $ perl -"V" Is there any way you can create a reproducer containing only the failing opendir statement? Is there any way you can try this with a recent version of Perl (5.8.6 is nine years old)? |
From darlene@integ.comHi Craig, Here is the output for perl-"V" Summary of my perl5 (revision 5 version 8 subversion 6) configuration: Characteristics of this PERLSHR image: Attached is a reproducer of the problem. The HP website only has Perl 5.8.6 available for download for OpenVMS. Sincerely, -----Original Message----- On Tue, Jan 14, 2014 at 8:58 AM, Darlene Riddle <perlbug-followup@perl.org> wrote:
Can you please post the output of: $ perl -"V" Is there any way you can create a reproducer containing only the failing opendir statement? Is there any way you can try this with a recent version of Perl (5.8.6 is nine years old)? |
From @craigberryOn Wed, Jan 15, 2014 at 7:51 AM, Riddle, Darlene <darlene@integ.com> wrote:
Thanks. That's definitely the HP 5.8.6 kit.
It's not clear to me whether it's failing on the existence check or on To confirm that DECnet is set up and working, do this: $ dir WSOMSV::dka200:[soms_ops4.SCHED.DOMAINS] Do the existence check: $ perl -e "-e 'WSOMSV::dka200:[soms_ops4.SCHED.DOMAINS]' or die $^E;" Try the opendir: $ perl -e "opendir(D, 'WSOMSV::dka200:[soms_ops4.SCHED.DOMAINS]') or die $^E;"
That is true, and my understanding is they have no plans to provide https://sourceforge.net/projects/vmsperlkit/files I'm pretty sure 5.18.2 won't crash the way 5.8.6 does, but it's hard In any case, if DECnet is set up and working on your system, then the
Can you be more specific about the Perl version where this last worked? |
From darlene@integ.comCraig, Does the kit include executables or will I have to build the code? If so, I could try download it and change the perl symbol and perl_root logical to point to the newer version. The older version of perl is This is perl, version 5.001 Unofficial patchlevel 1m. Copyright 1987-1994, Larry Wall Sincerely, -----Original Message----- On Wed, Jan 15, 2014 at 7:51 AM, Riddle, Darlene <darlene@integ.com> wrote:
Thanks. That's definitely the HP 5.8.6 kit.
It's not clear to me whether it's failing on the existence check or on the opendir, so let's break this down a bit further. To confirm that DECnet is set up and working, do this: $ dir WSOMSV::dka200:[soms_ops4.SCHED.DOMAINS] Do the existence check: $ perl -e "-e 'WSOMSV::dka200:[soms_ops4.SCHED.DOMAINS]' or die $^E;" Try the opendir: $ perl -e "opendir(D, 'WSOMSV::dka200:[soms_ops4.SCHED.DOMAINS]') or die $^E;"
That is true, and my understanding is they have no plans to provide any newer kits. The reason I know that is they asked me to produce kits, which I have done and made available at: https://sourceforge.net/projects/vmsperlkit/files I'm pretty sure 5.18.2 won't crash the way 5.8.6 does, but it's hard to predict whether it will work or not. I have not used DECnet in ages, don't even have it installed on most of my systems, and Perl is not tested with file specifications having node names. But it should still work. In any case, if DECnet is set up and working on your system, then the only possible way forward with Perl is to try a new version than what you're using.
Can you be more specific about the Perl version where this last worked? |
From @craigberryOn Thu, Jan 16, 2014 at 9:21 AM, Riddle, Darlene <darlene@integ.com> wrote:
It's a binary kit including executables. You can easily install it |
From darlene@integ.comHi Craig, I missed your questions below the first time. I installed Perl 5.18.2. "-e" and opendir still failed on a remote host. DECnet is set up and working correctly. I tried the following tests with the newer version of Perl. Your perl commands do not produce any output to determine whether they worked or not. I ran the reproducer and it failed. I removed the "-e" from the perl script and the opendir command failed also. Both produced the error, " ERROR: Cannot open the directory 'WSOMSV::dka200:[soms_ops4.SCHED.DOMAINS]' for input". Sincerely, -----Original Message----- On Wed, Jan 15, 2014 at 7:51 AM, Riddle, Darlene <darlene@integ.com> wrote:
Thanks. That's definitely the HP 5.8.6 kit.
It's not clear to me whether it's failing on the existence check or on the opendir, so let's break this down a bit further. To confirm that DECnet is set up and working, do this: $ dir WSOMSV::dka200:[soms_ops4.SCHED.DOMAINS] Do the existence check: $ perl -e "-e 'WSOMSV::dka200:[soms_ops4.SCHED.DOMAINS]' or die $^E;" Try the opendir: $ perl -e "opendir(D, 'WSOMSV::dka200:[soms_ops4.SCHED.DOMAINS]') or die $^E;"
That is true, and my understanding is they have no plans to provide any newer kits. The reason I know that is they asked me to produce kits, which I have done and made available at: https://sourceforge.net/projects/vmsperlkit/files I'm pretty sure 5.18.2 won't crash the way 5.8.6 does, but it's hard to predict whether it will work or not. I have not used DECnet in ages, don't even have it installed on most of my systems, and Perl is not tested with file specifications having node names. But it should still work. In any case, if DECnet is set up and working on your system, then the only possible way forward with Perl is to try a new version than what you're using.
Can you be more specific about the Perl version where this last worked? |
From @craigberryOn Mon, Jan 20, 2014 at 7:38 AM, Riddle, Darlene <darlene@integ.com> wrote:
If they produce no output, that means they worked. Only failure would $ perl -e "-e 'WSOMSV::dka200:[soms_ops4.SCHED.DOMAINS]' or die $^E;"
Since the one-liner examples worked for you, I'm puzzled by why your $ type test_remote.pl |
From darlene@integ.comCraig, Here is the result of the test: ERROR: Cannot open the directory 'WSOMSV::dka200:[soms_ops4.SCHED.DOMAINS]': invalid argument at test_remote.pl line 6. Sincerely, -----Original Message----- On Mon, Jan 20, 2014 at 7:38 AM, Riddle, Darlene <darlene@integ.com> wrote:
If they produce no output, that means they worked. Only failure would produce an error, such as this on a system without DECNet installed: $ perl -e "-e 'WSOMSV::dka200:[soms_ops4.SCHED.DOMAINS]' or die $^E;"
Since the one-liner examples worked for you, I'm puzzled by why your reproducer failed. That error message comes from your script and doesn't include an error reason so it's hard to know what's going on. $ type test_remote.pl |
From @craigberryOn Tue, Jan 21, 2014 at 4:02 PM, Riddle, Darlene <darlene@integ.com> wrote:
I finally got a test environment set up where I could reproduce this $ git show 0f669c9 In vms.c's Perl_opendir, skip access check on remotes. As reported in [perl #121002], the homegrown opendir has been It appears that the culprit was the introduction of access The reason access checking broke remote access is that it's based The fix is simple enough -- just skip the access check if the Inline Patchdiff --git a/vms/vms.c b/vms/vms.c
index cbc47d2..c0fa4e4 100644
--- a/vms/vms.c
+++ b/vms/vms.c
@@ -9977,7 +9977,8 @@ Perl_opendir(pTHX_ const char *name)
/* Check access before stat; otherwise stat does not
* accurately report whether it's a directory.
*/
- if (!cando_by_name_int(S_IRUSR,0,dir,PERL_RMSEXPAND_M_VMS_IN)) {
+ if (!strstr(dir, "::") /* sys$check_access doesn't do remotes */
+ && !cando_by_name_int(S_IRUSR,0,dir,PERL_RMSEXPAND_M_VMS_IN)) {
/* cando_by_name has already set errno */
Safefree(dir);
return NULL; |
From darlene@integ.comThanks, Craig. How much effort is involved in building Perl on OpenVMS 8.4? Sincerely, -----Original Message----- On Tue, Jan 21, 2014 at 4:02 PM, Riddle, Darlene <darlene@integ.com> wrote:
I finally got a test environment set up where I could reproduce this and see what was going on. I've pushed a fix to the development sources and included it below as well. This fix will appear in 5.20, which won't be out for a few months. I'll see about getting it into 5.18.3, which is also probably some months away. I think the only immediate solution is to build Perl from source with this fix included. $ git show 0f669c9 In vms.c's Perl_opendir, skip access check on remotes. As reported in [perl #121002], the homegrown opendir has been It appears that the culprit was the introduction of access The reason access checking broke remote access is that it's based The fix is simple enough -- just skip the access check if the diff --git a/vms/vms.c b/vms/vms.c |
From darlene@integ.comI went to the perl download site but I did not see a version for OpenVMS. Can you direct me to the correct version? How much work will be involved in building perl? I have a C compiler already. I am trying to make a decision on whether to compile a newer version of Perl or replace the Perl scripts that use a remote node name with DCL scripts (27 scripts in all). Sincerely, -----Original Message----- On Tue, Jan 21, 2014 at 4:02 PM, Riddle, Darlene <darlene@integ.com> wrote:
I finally got a test environment set up where I could reproduce this and see what was going on. I've pushed a fix to the development sources and included it below as well. This fix will appear in 5.20, which won't be out for a few months. I'll see about getting it into 5.18.3, which is also probably some months away. I think the only immediate solution is to build Perl from source with this fix included. $ git show 0f669c9 In vms.c's Perl_opendir, skip access check on remotes. As reported in [perl #121002], the homegrown opendir has been It appears that the culprit was the introduction of access The reason access checking broke remote access is that it's based The fix is simple enough -- just skip the access check if the Inline Patchdiff --git a/vms/vms.c b/vms/vms.c
index cbc47d2..c0fa4e4 100644
--- a/vms/vms.c
+++ b/vms/vms.c
@@ -9977,7 +9977,8 @@ Perl_opendir(pTHX_ const char *name)
/* Check access before stat; otherwise stat does not
* accurately report whether it's a directory.
*/
- if (!cando_by_name_int(S_IRUSR,0,dir,PERL_RMSEXPAND_M_VMS_IN)) {
+ if (!strstr(dir, "::") /* sys$check_access doesn't do remotes */
+ && !cando_by_name_int(S_IRUSR,0,dir,PERL_RMSEXPAND_M_VMS_IN)) {
/* cando_by_name has already set errno */
Safefree(dir);
return NULL; |
From @craigberryOn Mon, Jan 27, 2014 at 8:58 AM, Riddle, Darlene <darlene@integ.com> wrote:
There is no separate source distribution for VMS -- just grab the
You'll also need a tar utility, a gzip utility, and MMK. I believe http://perl5.git.perl.org/perl.git/blob/HEAD:/README.vms I would expect a couple hours to track down and install the various |
From @maukeOn Sat Jan 25 09:14:47 2014, craig.a.berry@gmail.com wrote:
This ticket is listed in perl5200delta. Can it be closed? |
From @craigberryOn Mon, Feb 22, 2016 at 4:29 PM, l.mai@web.de via RT
Yes, and thanks for chasing the cobwebs out of the RT queue. |
@mauke - Status changed from 'open' to 'resolved' |
Migrated from rt.perl.org#121002 (status was 'resolved')
Searchable as RT121002$
The text was updated successfully, but these errors were encountered: