[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference iosg::all-in-1_v30

Title:*OLD* ALL-IN-1 (tm) Support Conference
Notice:Closed - See Note 4331.l to move to IOSG::ALL-IN-1
Moderator:IOSG::PYE
Created:Thu Jan 30 1992
Last Modified:Tue Jan 23 1996
Last Successful Update:Fri Jun 06 1997
Number of topics:4343
Total number of notes:18308

132.0. "OA$TRA_SET causes ACC VIO !" by UTROP1::CARLIER_J (John - Utrecht The Netherlands) Fri Feb 28 1992 12:11


Has anyone seen this problem before ?

I am trying to get a trace of a ALL-IN-1 script from a BATCH job.

We have reproduced the problem in a few lines of code. 

If the OA$TRA_SET ALL,LOG is removed the job runs ok.

To reproduce the problem store the following as TEST.COM and TEST.SCP and
then type

$ @TEST

Submit of TEST will also result in an ACCESS VIOLATION.

The A1TRACE.LOG and the TEST.LOG are also included.

Regards

John



$!=======================================================================
$!              TEST.COM
$!
$! procedure voor testen dump/trace
$!
$!=======================================================================
$!
$ set verify
$ START:
$ WRITE SYS$OUTPUT "   Allin1 wordt opgestart !"
$!
$ set def sys$login
$!
$	allin1  /noinit -
		/reenter 
OA$INI_INIT            
<oa$tra_set all,log
<do test
.exit
$!
$ WRITE SYS$OUTPUT "   Bestand is aangemaakt !"
$ set noverify
$!



!
!! TEST.SCP
!
     form auto select for profil do sel_style -
          .%key/style=file/list="md_asz.sel"

	get oa$display="aantal geselecteerd = " oa$src_count \force

.label einde 
       .exit



A1TRACE.LOG
===========

0   ! OA$FLO_ALL_NDISP: Undisplay all workspaces
10     ! OA$FRM_DISPATCH: Dispatching auto select for profil do sel_style .%key/style=file/list="md_asz.sel"
10     !  
10     ! ----------- CURRENT FORM INFORMATION ------------
30     ! OA$FLO_ALL_NDISP: Undisplay all workspaces


TEST.LOG
========

$!=======================================================================
$!              TEST.COM
$!
$! procedure voor testen dump/trace
$!
$!=======================================================================
$!
$ set verify
$ START:
$ WRITE SYS$OUTPUT "   Allin1 wordt opgestart !"
   Allin1 wordt opgestart !
$!
$ set def sys$login
$!
$	allin1  /noinit -
		/reenter 
OA$INI_INIT            
<oa$tra_set all,log
<do test
%SYSTEM-F-ACCVIO, access violation, reason mask=00, virtual address=00000050, PC=0013D668, PSL=03C00000

  Improperly handled condition, image exit forced.

	Signal arguments	      Stack contents

	Number = 00000005		 020E0000
	Name   = 0000000C		 00000000
		 00000000		 7FF0D514
		 00000050		 7FF0D4D8
		 0013D668		 00000000
		 03C00000		 21FC0000
					 7FF0D514
					 7FF0D4D8
					 00138807
					 00138717

	Register dump

	R0 = 00000001  R1 = 00000001  R2 = 00000000  R3 = 7FF0DD3C
	R4 = 7FF0D52C  R5 = 0018E604  R6 = 000C01E6  R7 = 00149042
	R8 = 00148D12  R9 = 00141190  R10= 00000000  R11= 0018D330
	AP = 7FF0D3F0  FP = 7FF0D3B0  SP = 7FF0D42C  PC = 0013D668
	PSL= 03C00000
T.RTitleUserPersonal
Name
DateLines
132.1Couldn't duplicate it ..OCTAVE::VIGNEAULTFri Feb 28 1992 14:2095
    
    I tried your program on an ALL-IN-1 V3.0 system.  I didn't get an
    ACCVIO, however it did flag the .exit in the script as invalid.
    
    I changed the .exit in the script to exit, and took the .exit out
    of the command procedure.  Worked fine for me after that.
    
    I also added sys$login in the Do statement - "Do sys$login:test"
    Is it possible that the script isn't being found ? Do you have it
    in the oauser area or in sys$login, or saomewhere else.
    
    Here's the files:
    
$!=======================================================================
$!              TEST.COM
$!
$! procedure voor testen dump/trace
$!
$!=======================================================================
$!
$ set verify
$ START:
$ WRITE SYS$OUTPUT "   Allin1 wordt opgestart !"
$!
$ set def sys$login
$!
$	allin1  /noinit -
		/reenter 
OA$INI_INIT            
<oa$tra_set all,log
<do sys$login:test
$!
$ WRITE SYS$OUTPUT "   Bestand is aangemaakt !"
$ set noverify
$!
    
    
!
!! TEST.SCP
!
     form auto select for profil do sel_style -
          .%key/style=file/list="md_asz.sel"

	get oa$display="aantal geselecteerd = " oa$src_count \force

.label einde 
       exit
    
    
    The logfile - test.log
    
$ ON CONTROL_Y THEN $LOGOUT
$ ON ERROR THEN $LOGOUT
$ SET NOON
$ @SYS$MANAGER:GLOBALS.COM
$ ! G L O B A L S . C O M
$ !
$ ! Place symbols that you want to be available to all users, within this file
$ ! This file is called from SYSTARTUP.COM
$ ! ===========================================================================
$ !
$ SET NOON
$ IF "BATCH" .NES. "INTERACTIVE" THEN $EXIT
$ SET NOON
$!=======================================================================
$!              TEST.COM
$!
$! procedure voor testen dump/trace
$!
$!=======================================================================
$!
$ set verify
$ START:
$ WRITE SYS$OUTPUT "   Allin1 wordt opgestart !"
   Allin1 wordt opgestart !
$!
$ set def sys$login
$!
$	allin1  /noinit -
		/reenter 
OA$INI_INIT            

<oa$tra_set all,log
<do sys$login:test





	VIGNEAULT finished using ALL-IN-1 at 28-Feb-1992 09:14am


$!
$ WRITE SYS$OUTPUT "   Bestand is aangemaakt !"
   Bestand is aangemaakt !
$ set noverify
  VIGNEAULT    job terminated at 28-FEB-1992 09:14:24.94

  Accounting information:
  Buffered I/O count:             163         Peak working set size:    2352
  Direct I/O count:               216         Peak page file size:     15417
  Page faults:                   1878         Mounted volumes:             0
  Charged CPU time:           0 00:00:22.46   Elapsed time:     0 00:00:33.34
132.2It must be OA$TRA_SETUTROP1::CARLIER_JJohn - Utrecht The NetherlandsFri Feb 28 1992 15:257
    
    Sorry, I forgot to give the ALL-IN-1 version(s) I used.
    The problem is on V2.3 and V2.4. The TEST script is in SYS$LOGIN
    and I think the problem is the OA$TRA_SET option because there's no
    problem when I leave it out.
    
    John.
132.3.COMs should just have FUNCTION, not <FUNCTIONSKNNER::SKINNERI&#039;m doing my EARSFri Feb 28 1992 15:334
Also, you really don't need the "<" leadin for functions in your .COM.  Maybe
this is somehow to blame.  You might want to try it without them.

/Marty
132.4Didn't helpUTROP1::CARLIER_JJohn - Utrecht The NetherlandsFri Feb 28 1992 21:0918
re .3

Nice try Marty, but it did not help.

Script was copied from the customer and I didn't notice them, but it did 
not help.

I had a look in STARS and found a problem with OA$DTR functions and 
OA$TRA_SET, but I don't know if this has anything to do with it ? We do not 
have DTR on the system, but it might be the same problem area.

Regards

John.

PS Marty, we will have to find a new restaurant in Munich, the Russian is 
closed.

132.5More information... if it's helpfulSHALOT::NICODEMWho told you I&#039;m paranoid???Tue Mar 03 1992 14:0148
	Hi, John!  A couple of additional notes (just so you know you're not
going crazy!):

	1)  The problem *does* exist; I can duplicate it on our V2.4 system.

	2)  While some of the earlier replies re: syntax (e.g., the "<" or the
	    .EXIT) are technically correct, they do not affect the problem;
	    I can reproduce it even with the correct syntax.

	3)  It doesn't even require the TEST.COM procedure to cause the error;
	    I can duplicate it manually.

	4)  I'm not sure it's directly related to your TEST script; but it does
	    appear to be related to the OA$TRA_SET function.

	Here's why I say the latter.  I run $ALLIN1/NOINIT/REENT (as your .COM
procedure does).  Then, I <DO TEST and it runs fine.  I can even <DO TEST again
and again.  *After* I've done that, I <OA$TRA_SET ALL,LOG.  If I <DO TEST once
more, I get the ACCVIO.

	*HOWEVER*...  it doesn't even require that I <DO TEST after I turn on
tracing!  If I change your order, so that I <DO TEST, then turn on tracing, and
then do something like <LIST MD_ASZ.SEL, I still ACCVIO!  The wierd part is that
I can <DO TEST, turn on tracing, and do *other* things (like <GET OA$TIME, or
something trivial).  But then something like the <LIST function crashes 
ALL-IN-1.  Yet if I <DO TEST and immediately <LIST MD_ASZ.SEL (without turning
tracing on), it's OK.

	So... now we're going to simplify the problem.  If I enter ALL-IN-1 as
before, then (after the OA$INI_INIT and turning on tracing) I say <FOR PROFIL,
I get no problem.  Yet if I say <FORM AUTO SELECT FOR PROFIL, I get the ACCVIO.
So it seems to have something to do with the *interaction* between tracing and
processing the select form.

	BTW, one last piece of information:  the problem does *not* have any-
thing to do with the /REENTER qualifier; it happens even without it.  But it
*IS* related to the /NOINIT.  That is, if I log into ALL-IN-1 normally, and
enter the commands, it works fine.  Only when I use /NOINIT, followed by the
OA$INI_INIT function (and then, of course, the FORM AUTO SELECT FOR PROFIL)
does the ACCVIO occur.

	That's about as far as I've taken it; maybe this information will help
someone else spot the "flaw in the flow"  8^).

	F

	P.S.  Maybe it's the Dutch; I didn't try replacing the messages with
English text!  8^)
132.6It looks like an inadvertant coding errorSKNNER::SKINNERI&#039;m doing my EARSTue Mar 03 1992 18:5928
This problem has nothing to do with the select form.  It has to do with ANY
form being displayed!

The same ACCVIO can be seen by turning on trace, followed by FORM xyz, where
"xyz" was PROFIL, MAIN, DEFAULT, whatever (FORM DSAB access fails).

Doing SHOW_FORM PROFIL also ACCVIOed.

DSR references to PROFIL were successful and correct (DATA DSAB access works).

All the ACCVIOs I got were read references to VA %X50 from PC 18587C.  According
to the link map for my image this is in module OAFLO.

Here is the relevant parts of a SHOW CALL:

 module name     routine name                     line       rel PC    abs PC
*OAFLO           OA$FLO_DUMP_STACK                2401      0000003C  0018587C
*OAFRM           OA$FRM_DISPATCH                  1020      000000F0  001809CA
*OACMD           OA$CMD_DISPATCH                  1380      0000044C  0017CE0A
*OAMSG           OA$MSG_CALL                       311      0000001C  0018B52C
*OA              OA$MAIN                           439      00000253  000E96B9

This ACCVIO is because of OA$GL_DBF being 0 when OA$FLO_DUMP_STACK is called.
That should normally be okay.  The %X50 offset from 0 (VA %X50) is because of
the .DBX[DSA$W_FIELD] reference, which SHOULD be conditional, as the rest of
the routine is when .DBX NEQ 0.

/Marty
132.7Could it be?AIMTEC::WICKS_AVote Bill&#039;n&#039;Opus for a weirder USATue Mar 03 1992 22:007
    Marty,
    
    The change on 12-Aug-1985 looks particularly dodgy to me!
    
    regards,
    
    Andrew.D.Wicks
132.8I would never code something like that...SKNNER::SKINNERI&#039;m doing my EARSTue Mar 03 1992 22:4410
RE: .7

If you are referring to a revision by me, I wouldn't doubt it.  I don't have
the CMS history for anything before V2.4 handy.

But my hat off to the developer that could introduce a bug into software this
popular that took 6.5 years to be reported, or at least identified to the
module level in this, our ALL-IN-1 conference!

/Marty
132.9SPR required ?/ V3.0UTROP1::CARLIER_JJohn - Utrecht The NetherlandsWed Mar 04 1992 13:4112
    Thanks for the comments so far.
    
    It leaves me with two points.
    
    1. Is this unknown officially ? if so I will send an SPR.
    
    2. Is it fixed in V3.0 ?
    
    Regards
    
    John
    
132.10More...SHALOT::NICODEMWho told you I&#039;m paranoid???Wed Mar 04 1992 14:1713
�    1. Is this unknown officially ? if so I will send an SPR.

	Based on the replies you've seen here, I'd say "not until now, it hasn't
been!"  So go ahead and SPR it.

�    2. Is it fixed in V3.0 ?
 
	It appears to be.  I haven't looked at the code yet, but I tried the
same test on a V3.0 system, and it works just fine.

	HTH,

	F
132.11use set_trace in v3.0IOSG::ECHRISTIEEileen ChristieThu Mar 05 1992 10:098
I've never seen this bug reported, however, it's quite likely that this has
been fixed as a side effect of the new tracing which changed this code 
extensively. Oa$tra_set in V3 uses this new code, so I've been unable to 
reproduce it here. In V3, the new set_trace function should be used in
preference to oa$tra_set if you want a better UI and the full tracing 
functionality, eg filtering

eileen 
132.12I checked the source; the code was fixed for V3SKNNER::SKINNERI&#039;m doing my EARSThu Mar 05 1992 17:310