| . It crashes in sysgen attempting to load the driver (2nd movc in
. a row, a movc 8(r9),(r9),(r11) that is copying the driver to a
. kernel buffer). I've looked briefly and seen nothing odd, and
I guess then, I would say "Crashes How?" I presume an ACCVIO error.
I don't see a loop in LOADDRIV.LIS that would indicate a second chance
at the
18$: MOVC DPT$W_SIZE(R9),(R9),(R11) ;MOVE DRIVER TO THE BUFFER
line.
What does a FORMAT @R9/type=dpt show?
What does a SEARCH FQDRIVER.MAP "VIRTUAL MEMORY" show?
|
| I have done some further analysis and the difference seems to be a
change in LINK so the driver image no longer has the array stuff in
it. Is a workaround available?
Here are the specifics
SDA> form @r9
00072000 DPT$B_STR_STRUC 00
DPT$L_FLINK
00072001 000000
00072004 DPT$L_BLINK 00000000
00072008 DPT$W_SIZE 29D2
0007200A DPT$B_TYPE 1E
0007200B DPT$B_REFC 00
0007200C DPT$B_ADPTYPE 05
0007200D 00
0007200E DPT$W_UCBSIZE 0150
00072010 DPT$B_FLAGS 02
DPT$L_FLAGS
00072011 000001
00072014 DPT$W_INITTAB 0082
00072016 DPT$W_REINITTAB 00C9
00072018 DPT$W_UNLOAD 0000
0007201A DPT$W_MAXUNITS 0002
0007201C DPT$W_VERSION 0005
0007201E DPT$W_DEFUNITS 0002
00072020 DPT$W_DELIVER 0000
00072022 DPT$W_VECTOR 0000
00072024 DPT$T_NAME "FQDRIVER"
00072024 44514608
00072028 45564952
0007202C 00000052
00072030 DPT$Q_LINKTIME 00000000
00072034 00000000
00072038 DPT$L_ECOLEVEL 00000000
0007203C DPT$L_UCODE 00000000
00072040 DPT$Q_LMF_1 00000000
00072044 00000000
00072048 DPT$Q_LMF_2 00000000
0007204C 00000000
00072050 DPT$Q_LMF_3 00000000
00072054 00000000
00072058 DPT$Q_LMF_4 00000000
0007205C 00000000
00072060 DPT$Q_LMF_5 00000000
00072064 00000000
00072068 DPT$Q_LMF_6 00000000
0007206C 00000000
00072070 DPT$Q_LMF_7 00000000
00072074 00000000
00072078 DPT$Q_LMF_8 00000000
0007207C 00000000
00072080 DPT$W_DECW_SNAME 0000
DPT$C_LENGTH
System crash information
------------------------
Time of system crash: 11-MAY-1996 15:14:03.79
Version of system: OpenVMS (TM) VAX Version V7.1
System Version Major ID/Minor ID: 1/0
System type: VAXstation 3100/SPX
Crash CPU ID/Primary CPU ID: 00/00
Bitmask of CPUs active/available: 00000001/00000001
CPU bugcheck codes:
CPU 00 -- SSRVEXCEPT, Unexpected system service exception
CPU 00 Processor crash information
----------------------------------
CPU 00 reason for Bugcheck: SSRVEXCEPT, Unexpected system service exception
Process currently executing on this CPU: GCE
Current image file: ROW$DKB100:[SYS0.SYSCOMMON.][SYSEXE]SYSGEN.EXE
Current IPL: 0 (decimal)
CPU database address: 8207E000
General registers:
R0 = 00000009 R1 = 7FFE778C R2 = 000029D2 R3 = 81AE7EC0
R4 = 00000000 R5 = 000000C9 R6 = 00000020 R7 = 0001B7CC
R8 = 0001AA32 R9 = 00072000 R10 = 00002A00 R11 = 81AE7EC0
AP = 7FFE7768 FP = 7FFE7750 SP = 7FFE7750 PC = 817479E3
PSL = 00000000
Processor registers:
P0BR = 825B3000 SBR = 01F67200 ASTLVL = 00000004
P0LR = 00000397 SLR = 0001D980 SISR = 00000000
P1BR = 81DF3000 PCBB = 00992A20 ICCS = 00000040
P1LR = 001FF454 SCBB = 01F60E00 SID = 0A000005
TODR = 53CA331F CADR = 000000FC
CACR = AFFFC154 MSER = 00000000
CPU 00 Processor crash information
----------------------------------
ISP = 8207F600
KSP = 7FFE7750
ESP = 7FFE9800
SSP = 7FFECA44
USP = 7FE8CE78
No spinlocks currently owned by CPU 00
SP => 7FFE7750 00000000
7FFE7754 00000000
7FFE7758 7FE8CECC
7FFE775C 7FFE77A8 CTL$GL_KSTKBAS+005A8
7FFE7760 80000014 EXE$QIOW_3+00004
7FFE7764 8174A2D1 EXE$CONTSIGNAL+0007C
7FFE7768 00000002
7FFE776C 7FFE778C CTL$GL_KSTKBAS+0058C
7FFE7770 7FFE7774 CTL$GL_KSTKBAS+00574
7FFE7774 00000004
7FFE7778 7FFE77E4 CTL$GL_KSTKBAS+005E4
7FFE777C FFFFFFFD LKB$K_SCSWAIT
7FFE7780 05C029D2
7FFE7784 00072000
7FFE7788 000008F8 BUG$_SYSAPLERR
7FFE778C 00000005
7FFE7790 0000000C
7FFE7794 00000001
7FFE7798 000749D0
7FFE779C 00007391
7FFE77A0 08C00004
7FFE77A4 00000001
7FFE77A8 00000000
7FFE77AC 0FFC0000
7FFE77B0 7FE8CE94
7FFE77B4 7FFE77E4 CTL$GL_KSTKBAS+005E4
7FFE77B8 8179DA11 EXE$CMKRNL+0000D
7FFE77BC 00011148
7FFE77C0 000012A0 VCRP$K_EC_DLL_LAST+00095
7FFE77C4 81AE0B80
SDA> exam/inst 7340:7391
%SDA-W-INSKIPPED, unreasonable instruction stream - 1 bytes skipped
00007341: INCB @#C14BFFFF
00007347: NOP
00007348: EXTZV (R6)+,@#C251FFFF,VCRP$K_EC_DLL_LAST+000C4,R1
00007355: MOVL R1,R5
00007358: ADDL2 #10,R1
0000735B: JSB @#V_EXE$ALONPAGVAR
00007361: BLBS R0,00007373
00007364: MOVW R10,08(R11)
00007368: MOVL R11,R0
0000736B: JSB @#V_EXE$DEANONPAGED
00007371: BRB 0000732E
00007373: MOVL R2,VCRP$K_EC_DLL_LAST+000CC
0000737A: MOVAL 08(R2),R2
0000737E: MOVW R1,(R2)+
00007381: MOVW #0062,(R2)+
00007386: MOVL R1,(R2)+
00007389: MOVC3 R5,@VCRP$K_EC_DLL_LAST+000C4,(R2)
00007391: MOVC3 08(R9),(R9),(R11)
00007396: BISL2 VCRP$K_EC_DLL_LAST+000BE,10(R11)
This is inside SYSGEN trying to copy the driver into memory.
SDA> exam @r9;20
01500005 001E29D2 00000000 00000000 ........�)....P. 00072000
00020005 00020000 00C90082 00000102 ......�......... 00072010
SDA> exam @r11;20
FFFFFFFF FFFFFFFF 00042A00 81AEA8C0 ��..*.......... 81AE7EC0
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ................ 81AE7ED0
Problem seems to be the bulk of the driver isn't in memory
SDA> exam 749d0
%SDA-E-NOTINPHYS, 000749D0 : virtual data not in physical memory
SDA> exam 72000+29d2
%SDA-E-NOTINPHYS, 000749D2 : virtual data not in physical memory
SDA> exam 72000+29cf
%SDA-E-NOTINPHYS, 000749CF : virtual data not in physical memory
SDA> exam 72000+29c0
%SDA-E-NOTINPHYS, 000749C0 : virtual data not in physical memory
SDA> exam 72000+2900
%SDA-E-NOTINPHYS, 00074900 : virtual data not in physical memory
SDA> exam 72000+2200
%SDA-E-NOTINPHYS, 00074200 : virtual data not in physical memory
SDA> exam 72000+2000
%SDA-E-NOTINPHYS, 00074000 : virtual data not in physical memory
SDA> exam 72000+1000
%SDA-E-NOTINPHYS, 00073000 : virtual data not in physical memory
SDA> exam 72000+0800
00072800: 008CC52C ",�.."
so the copy-from address is invalid.
SDA> exam 72000+0c00
00072C00: 0000BC0F ".�.."
SDA> exam 72000+0d00
00072D00: 00000000 "...."
SDA> exam 72000+0e00
%SDA-E-NOTINPHYS, 00072E00 : virtual data not in physical memory
So the area loaded is 0000 - 0dff (720df0 is ok).
That is 7 blocks' worth, the size of the driver image.
From the map file
Cluster Type Pages Base Addr Disk VBN PFC Protection and Paging $
------- ---- ----- --------- -------- --- --------------------- $
DEFAULT_CLUSTER 0 5 00000000 2 0 READ WRITE COPY ON REF
0 16 00000A00 0 0 READ WRITE DEMAND ZERO
0 1 00002A00 7 0 READ WRITE FIXUP VECTORS
253 20 7FFFD800 0 0 READ WRITE DEMAND ZERO
+----------------+
! Image Synopsis !
+----------------+
Virtual memory allocated: 00000000 00002BFF 00002C00 (1$
Stack size: 20. pages
Image header virtual block limits: 1. 1. ( 1. b$
Image binary virtual block limits: 2. 7. ( 6. b$
Image name and identification: FQDRIVER V02-003CB
System component mask: 0004803C
SYS$K_VERSION_IO 1,81
SYS$K_VERSION_FILES_VOLUMES 2,0
SYS$K_VERSION_PROCESS_SCHED 1,81
SYS$K_VERSION_SYSGEN 1,81
SYS$K_VERSION_VOLATILE 1,80
SYS$K_VERSION_MULTI_PROCESSING 1,1
Number of files: 4.
Number of modules: 3.
Number of program sections: 5.
Number of global symbols: 36.
Number of image sections: 4.
Debugger transfer address: 7FFEDF68
Image type: EXECUTABLE.
Map format: FULL in file SYS$SYSDEVICE:[E$
Estimated map length: 21. blocks
Thus the binary limits are 7 blocks, but there is a bunch of extra data
which is supposed to be "there" but is not apparently used.
Now if I link the same source...no changes at all...on VMS 6.2 Vax
the file is 24 blocks long, not 8, and the map contains this:
+------------------------+
! Image Section Synopsis !
+------------------------+
Cluster Type Pages Base Addr Disk VBN PFC Protection and Paging $
------- ---- ----- --------- -------- --- --------------------- $
DEFAULT_CLUSTER 0 21 00000000 2 0 READ WRITE COPY ON REF
0 1 00002A00 23 0 READ WRITE FIXUP VECTORS
253 20 7FFFD800 0 0 READ WRITE DEMAND ZERO
and
+----------------+
! Image Synopsis !
+----------------+
Virtual memory allocated: 00000000 00002BFF 00002C00 (1$
Stack size: 20. pages
Image header virtual block limits: 1. 1. ( 1. b$
Image binary virtual block limits: 2. 23. ( 22. b$
Image name and identification: FQDRIVER V02-003CB
System component mask: 0004803C
SYS$K_VERSION_IO 1,81
SYS$K_VERSION_FILES_VOLUMES 2,0
SYS$K_VERSION_PROCESS_SCHED 1,81
SYS$K_VERSION_SYSGEN 1,81
SYS$K_VERSION_VOLATILE 1,80
SYS$K_VERSION_MULTI_PROCESSING 1,1
Number of files: 4.
Number of modules: 3.
Number of program sections: 5.
Number of global symbols: 36.
Number of image sections: 3.
Debugger transfer address: 7FFEDF68
Image type: EXECUTABLE.
Map format: FULL in file SYS$SYSDEVICE:[E$
Estimated map length: 21. blocks
If now I link the .OBJ file assembled under VMS V7.1 with the VMS 6.2 linker
the executable is again 24 blocks long, not just 8, and the link map shows
this:
+------------------------+
! Image Section Synopsis !
+------------------------+
Cluster Type Pages Base Addr Disk VBN PFC Protection and Paging $
------- ---- ----- --------- -------- --- --------------------- $
DEFAULT_CLUSTER 0 21 00000000 2 0 READ WRITE COPY ON REF
0 1 00002A00 23 0 READ WRITE FIXUP VECTORS
253 20 7FFFD800 0 0 READ WRITE DEMAND ZERO
+----------------+
! Image Synopsis !
+----------------+
Virtual memory allocated: 00000000 00002BFF 00002C00 (1$
Stack size: 20. pages
Image header virtual block limits: 1. 1. ( 1. b$
Image binary virtual block limits: 2. 23. ( 22. b$
Image name and identification: FQDV7OBJ V02-003CB
System component mask: 0004803C
SYS$K_VERSION_IO 1,81
SYS$K_VERSION_FILES_VOLUMES 2,0
SYS$K_VERSION_PROCESS_SCHED 1,81
SYS$K_VERSION_SYSGEN 1,81
SYS$K_VERSION_VOLATILE 1,80
SYS$K_VERSION_MULTI_PROCESSING 1,1
Number of files: 4.
Number of modules: 3.
Number of program sections: 5.
Number of global symbols: 36.
Number of image sections: 3.
Debugger transfer address: 7FFEDF68
Image type: EXECUTABLE.
Map format: FULL in file SYS$SYSDEVICE:[E$
Estimated map length: 21. blocks
The linkage in all cases is done the same way:
$ link fqdriver+sys$system:sys.stb/sel+sys$input/opt
base=0
$
|