[Search for users]
[Overall Top Noters]
[List of all Conferences]
[Download this site]
Title: | MMS general interest file |
Notice: | Current version: V3.1-03 (see Note 3.2) |
Moderator: | EDSDS6::TOWNSEND |
|
Created: | Mon Feb 03 1986 |
Last Modified: | Wed May 14 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 1385 |
Total number of notes: | 4654 |
1375.0. "Generate gets ACCVIO on Alpha" by CSC32::EHA (Flip) Tue Feb 18 1997 13:27
Hello,
I have a customer that submitted some code that caused MMS to ACCVIO
when using the generate qualifier. I have tried to narrow this down
some by cutting out chuncks of code, but I have not found the correct
chuncks to cut out.
I have reproduced it on an Alpha VMS 6.2 with MMS 3.1-03. When
entering the following command:
$ MMS/GEN GEN.C
I get the following error:
MMS-S-GENBEGIN MMS description file generation started
%SYSTEM-F-ACCVIO, access violation, reason mask=00, virtual address=20727470, PC=20727470, PS=0000001B
Improperly handled condition, image exit forced.
Signal arguments: Number = 00000005
Name = 0000000C
00010000
20727470
20727470
0000001B
Register dump:
R0 = 0000000000000000 R1 = 0000000000000005 R2 = 00000000225C272C
R3 = 0000000000000000 R4 = 0000000000019616 R5 = 0000000000000001
R6 = 000000000001B3B4 R7 = 0000000000000000 R8 = 00099125000000B8
R9 = 00000000000000B8 R10 = 000991DD00000000 R11 = 00099125000004BD
R12 = 0000000000000000 R13 = 000000007F064990 R14 = 00000000000A6DC0
R15 = 0000000000EE8391 R16 = 00000000001582FC R17 = 0000000000000000
R18 = 44240000000B0001 R19 = 44240000000B0001 R20 = 0000000000000006
R21 = 000000000000003F R22 = 0000002443584156 R23 = 0000000000011268
R24 = 000000007F0649C0 R25 = 0000000000000002 R26 = 2931202B20727470
R27 = FFFFFFFFFFFFFF40 R28 = 2722000000B80000 R29 = 000000007EE4E2A0
SP = 000000007EE4E2A0 PC = 2931202B20727470 PS = 200000000000001B
The following is the source code that causes the problem, I called it
GEN.C, but the name of the file does not seem to matter:
/*
* extract_eq_param returns the value in a KEYWORD=VALUE[,] string which is
* embedded within another string. It then removes the KEYWORD=VALUE string.
*
* begin_ptr points to the comma in front of the KEYWORD if the keyword is
* embedded. It points to the KEYWORD if the keyword is at the beginning
* of the string.
*/
int extract_eq_param(begin_ptr,out_ptr)
char *out_ptr, *begin_ptr;
{
register char *param_ptr, *end_ptr, *temp_ptr;
/* Terminate if necessary. */
end_ptr = begin_ptr;
/*
* If a quoted string follows the equal sign, move beyond it.
* The quoted string may itself have quotes escaped in it.
*/
end_ptr = strchr(begin_ptr,'=') + 1;
/*
* If the very next character is a quote, find a matching quote (if any)
*/
while(end_ptr && *end_ptr && (*end_ptr == '\"')) {
/* Point at the open quote. */
temp_ptr = end_ptr;
/* Quote preceded by backslash does not count */
while((temp_ptr = strchr((temp_ptr + 1),'\"')) &&
(*(temp_ptr - 1) == '\\')) strcpy(temp_ptr - 1, temp_ptr);
/* Matching quote found. Point to the very next character. */
if(temp_ptr) end_ptr = temp_ptr + 1;
else if (*end_ptr) end_ptr = end_ptr + 1;
}
end_ptr--;
/*
* Look for a comma which is not 'escaped' by a backslash.
* Quit when one is found or when we reach the end of the string.
*/
while((end_ptr = strchr(end_ptr + 1,',')) && (*(end_ptr - 1) == '\\'))
/* Close up, removing the backslash. Ignore this comma */
strcpy(end_ptr - 1,end_ptr);
if(end_ptr) *end_ptr = '\0';
if(param_ptr = strchr(begin_ptr,'=')) {
param_ptr++;
strcpy(out_ptr,param_ptr);
/*
* "Close up" or reterminate the input string. If end_ptr is
* NULL, this is the last KEYWORD=VALUE in the -J string.
*/
if(end_ptr)
if(*begin_ptr == ',')
/* Preserve the comma between KEYWORD=VALUE entries */
strcpy(begin_ptr+1,end_ptr+1);
else strcpy(begin_ptr,end_ptr+1);
else *begin_ptr = '\0';
} /* End if(!(param_ptr = strchr(begin_ptr,'='))) */
}
Thank you!
Al
T.R | Title | User | Personal Name | Date | Lines |
---|
1375.1 | work in MMS 3.2 | EDSDS6::WANG | James - DECset Engineering | Tue Feb 18 1997 15:09 | 10 |
| Hi Al,
Thanks for the example.
We have done a lot of works for using MMS/GENERATION in the next release of
MMS. I have reproduced the problem with MMS 3.1-03, but the problem would not occur
with MMS 3.2 which filed test on February 24. See Note 1374 for information.
-James
|