On Wed, 30 Aug 2000, Craig A. Berry wrote:
> As you surmised, no. This is an old problem that has come back because we
> are now exercising cando_by_name() in a way that doesn't get hit very often.
> The provisional patch below got it working for me, but it will break for you
> if you are running on the system with LOGVOLNAM overridden. When I get
> another tuit or two I want to paste the device name from the stat buffer
> onto the filename returned by lib$fid_to_name in Perl_cando(). That in
> conjunction with this patch should get us back in business. If the
> foregoing makes no sense (and in the unlikely event anyone wants to know
> more), search the vmsperl archives for lib$fid_to_name.
OK, I am no longer experiencing difficulty with gen_shrfls.pl *but*
using the 6933 kit I get a complete failure of [.t.lib]trig.t and
I notice that this one-liner is enough to trigger the problem:
$ perl -"MMath::Trig" -e "print 'hhh'"
%SYSTEM-F-ACCVIO, access violation, reason mask=00, virtual
address=000000000000
0028, PC=0000000000146C98, PS=0000001B
Improperly handled condition, image exit forced.
Signal arguments: Number = 0000000000000005
Name = 000000000000000C
0000000000010000
0000000000000028
0000000000146C98
000000000000001B
Register dump:
R0 = 0000000000000000 R1 = 000000000029B5CC R2 = 0000000000055E20
R3 = 0000000000221BF8 R4 = 000000007B557EB4 R5 = 0000000000000000
R6 = 00000000001B2468 R7 = 0000000000001002 R8 = 0000000000000009
R9 = 0000000000001218 R10 = 0000000000000000 R11 = 00000000002183FB
R12 = 00000000001B231C R13 = 0000000000000028 R14 = 0000000000000000
R15 = 000000007B557970 R16 = 20202020090A7B20 R17 = 000000000008F180
R18 = 0000000000001219 R19 = 0000000000205B00 R20 = 000000007B557970
R21 = 0000000000000000 R22 = 000000007B557970 R23 = 0000000004040004
R24 = 0000000000205B00 R25 = 0000000000000001 R26 = FFFFFFFF805DE948
R27 = 000000007B52D308 R28 = 000000000010D7A0 R29 = 000000007AF87930
SP = 000000007AF87930 PC = 0000000000146C98 PS = 300000000000001B
$ show symbol $status
$STATUS == "%X1000000C"
> --- vms.c;-0 Tue Aug 29 16:52:44 2000
> +++ vms.c Tue Aug 29 17:41:26 2000
> @@ -5656,7 +5656,7 @@
> retsts = sys$check_access(&objtyp,&namdsc,&usrdsc,armlst);
> if (retsts == SS$_NOPRIV || retsts == SS$_NOSUCHOBJECT ||
> retsts == SS$_INVFILFOROP || retsts == RMS$_FNF || retsts == RMS$_SYN ||
> - retsts == RMS$_DIR || retsts == RMS$_DEV) {
> + retsts == RMS$_DIR || retsts == RMS$_DEV || retsts == RMS$_DNF) {
> set_vaxc_errno(retsts);
> if (retsts == SS$_NOPRIV) set_errno(EACCES);
> else if (retsts == SS$_INVFILFOROP) set_errno(EINVAL);
> [end of not quite a patch yet]
BTW the 6933 kit has the full version of this patch where you've removed
the special case for the certain compiler version.
I see that 6948 has been posted by Jarkko. I will be switching to that
now (not that I expect any vms specific changes in this regard).
Peter Prymmer