debugging the C compiler
>system_library_3rd_party>C_COMPILER>executable>ccom hello.c
use\000c_d\000fin\000tio\000s
\000"", line 1: illegal character: 000 (octal)
Error: out_of_bounds at common.cob$cerror|170
(>system_library_3rd_party>C_COMPILER>executable>ccom)
referencing 60162|145463
There was an attempt to use an invalid segment number.
r 20:38 0.908 88 level 3
probe
Condition out_of_bounds raised at cerror|173550 (level 23).
stack
28 command_processor_ (pl1)
27 release_stack (pl1)
26 unclaimed_signal (pl1)
25 default_error_handler_ (pl1)
24 any_other.4 (pl1)
23 cerror out_of_bounds
22 yylex
21 yyparse
20 mainp1
19 main
18 main_ (pl1)
17 command_processor_ (pl1)
16 release_stack (pl1)
15 unclaimed_signal (pl1)
14 default_error_handler_ (pl1)
13 any_other.4 (pl1)
12 ipc_fast_$block (pl1) quit
11 tty_io_$get_line (pl1)
10 read (pl1)
9 _filbuf
8 old_lxtitle
7 lxinit
6 mainp1
5 main
4 main_ (pl1)
3 command_processor_ (pl1)
2 listen_ (pl1)
1 initialize_process_ (pl1)
Don't have the source for the internals, just the ccom overseer.
The invalid segment number is reminiscent of the 'pl1 -ls' failure: incorrect CU save data on fault.
Once again, the arbitrary segment numbering is defeating the emulator debugger. Think about implementing Oscar.
pli >system_library_3rd_party>C_COMPILER>executable>ccom
text|33502 yylex Entrypoint
../tapeUtils/disasm 0 ccom | less
" 033500:
tra pr0|0631 " 000631710100
orsx0 0000252 " 000252240000
eax7 0001060 " 001060627000
epp2 pr7|034,n* " 700034352120
tsp2 pr2|01045 " 201045272100
oct 000000000000
oct 000000000650
tra 0027727 " 027727710000
" 033510:
epp7 pr6|032,n* " 600032373520
ldq pr7|00 " 700000236100
qrl 0000022 " 000022772000
epp1 pr7|00 " 700000351500
awd pr1|00,ql " 100000507506
ldaq pr1|00 " 100000237100
staq pr6|0150 " 600150757100
epp1 pr4|013016,n* " 413016351520
" 033520:
epp2 pr1|00 " 100000352100
mlr pr0|0100 " 000100100500
oct 200000000001
oct 600156000001
ldq pr6|0156 " 600156236100
qrs 0000033 " 000033732000
stq pr6|0156 " 600156756100
ldq pr6|0156 " 600156236100
" 033530:
stq pr6|0153 " 600153756100
ldq pr6|0153 " 600153236100
mpy 0040355 " 040355402000
stq pr6|0162 " 600162756100
epp1 pr4|013032,n* " 413032351520
ldq 0040355 " 040355236000
abd pr1|00,ql " 100000503506
epp2 pr1|00 " 100000352100
" 033540:
ldq pr6|0162 " 600162236100
abd pr2|00,ql " 200000503506
epp1 pr2|00 " 200000351500
mlr pr0|0100 " 000100100500
oct 100000000001
oct 600164000001
ldq pr6|0164 " 600164236100
qrs 0000033 " 000033732000
" 033550:
stq pr6|0164 " 600164756100
ldq 0040402 " 040402236000
anq pr6|0164 " 600164376100
tnz 0033561 " 033561601000
ldq 0040400 " 040400236000
stq pr6|0100 " 600100756100
lda pr6|0100 " 600100235100
sta pr6|0150,n* " 600150755120
DBG(752319914)> CPU DBG: 00311:033502 4 001060627000 (EAX7 001060) 001060 627(0) 0 0 0 00
DBG(752319916)> CPU DBG: 00311:033503 4 700034352120 (EPP2 PR7|34,N*) 700034 352(0) 1 0 1 00
DBG(752319918)> CPU DBG: 00311:033504 4 201045272100 (TSP2 PR2|1045) 201045 272(0) 1 0 0 00
DBG(752319962)> CPU DBG: 00311:033507 4 027727710000 (TRA 027727) 027727 710(0) 0 0 0 00
DBG(752341378)> CPU DBG: 00311:033510 4 600032373520 (EPP7 PR6|32,N*) 600032 373(1) 1 0 1 00
DBG(752341380)> CPU DBG: 00311:033511 4 700000236100 (LDQ PR7|0) 700000 236(0) 1 0 0 00
DBG(752341382)> CPU DBG: 00311:033512 4 000022772000 (QRL 000022) 000022 772(0) 0 0 0 00
DBG(752341384)> CPU DBG: 00311:033513 4 700000351500 (EPP1 PR7|0) 700000 351(1) 1 0 0 00
DBG(752341386)> CPU DBG: 00311:033514 4 100000507506 (AWD PR1|0,QL) 100000 507(1) 0 0 0 06
DBG(752341388)> CPU DBG: 00311:033515 4 100000237100 (LDAQ PR1|0) 100000 237(0) 1 0 0 00
DBG(752341390)> CPU DBG: 00311:033516 4 600150757100 (STAQ PR6|150) 600150 757(0) 1 0 0 00
DBG(752341392)> CPU DBG: 00311:033517 4 413016351520 (EPP1 PR4|13016,N*) 413016 351(1) 1 0 1 00
DBG(752341394)> CPU DBG: 00311:033520 4 100000352100 (EPP2 PR1|0) 100000 352(0) 1 0 0 00
DBG(752341396)> CPU DBG: 00311:033521 4 000100100500 (MLR PR0|100) 000100 100(1) 0 0 0 00
DBG(752341398)> CPU DBG: 00311:033524 4 600156236100 (LDQ PR6|156) 600156 236(0) 1 0 0 00
DBG(752341400)> CPU DBG: 00311:033525 4 000033732000 (QRS 000033) 000033 732(0) 0 0 0 00
DBG(752341402)> CPU DBG: 00311:033526 4 600156756100 (STQ PR6|156) 600156 756(0) 1 0 0 00
DBG(752341404)> CPU DBG: 00311:033527 4 600156236100 (LDQ PR6|156) 600156 236(0) 1 0 0 00
DBG(752341406)> CPU DBG: 00311:033530 4 600153756100 (STQ PR6|153) 600153 756(0) 1 0 0 00
DBG(752341408)> CPU DBG: 00311:033531 4 600153236100 (LDQ PR6|153) 600153 236(0) 1 0 0 00
DBG(752341410)> CPU DBG: 00311:033532 4 040355402000 (MPY 040355) 040355 402(0) 0 0 0 00
DBG(752341412)> CPU DBG: 00311:033533 4 600162756100 (STQ PR6|162) 600162 756(0) 1 0 0 00
DBG(752341414)> CPU DBG: 00311:033534 4 413032351520 (EPP1 PR4|13032,N*) 413032 351(1) 1 0 1 00
DBG(752341416)> CPU DBG: 033534 000560657220 (SCU 000560,N*) 000560 657(0) 0 1 1 00
DBG(752341417)> CPU DBG: 033534 000460710220 (TRA 000460,N*) 000460 710(0) 0 1 1 00
DBG(752389308)> CPU DBG: 00311:033534 4 042024351520 (EPP1 PR0|42024,N*) 042024 351(1) 1 0 1 00
DBG(752389310)> CPU DBG: 00311:033535 4 040355236000 (LDQ 040355) 040355 236(0) 0 0 0 00
DBG(752389312)> CPU DBG: 00311:033536 4 100000503506 (ABD PR1|0,QL) 100000 503(1) 0 0 0 06
DBG(752389314)> CPU DBG: 00311:033537 4 100000352100 (EPP2 PR1|0) 100000 352(0) 1 0 0 00
DBG(752389316)> CPU DBG: 00311:033540 4 600162236100 (LDQ PR6|162) 600162 236(0) 1 0 0 00
DBG(752389318)> CPU DBG: 00311:033541 4 200000503506 (ABD PR2|0,QL) 200000 503(1) 0 0 0 06
DBG(752389320)> CPU DBG: 00311:033542 4 200000351500 (EPP1 PR2|0) 200000 351(1) 1 0 0 00
DBG(752389322)> CPU DBG: 00311:033543 4 000100100500 (MLR PR0|100) 000100 100(1) 0 0 0 00
DBG(752389324)> CPU DBG: 00311:033546 4 600164236100 (LDQ PR6|164) 600164 236(0) 1 0 0 00
DBG(752389326)> CPU DBG: 00311:033547 4 000033732000 (QRS 000033) 000033 732(0) 0 0 0 00
DBG(752389328)> CPU DBG: 00311:033550 4 600164756100 (STQ PR6|164) 600164 756(0) 1 0 0 00
DBG(752389330)> CPU DBG: 00311:033551 4 040402236000 (LDQ 040402) 040402 236(0) 0 0 0 00
DBG(752389332)> CPU DBG: 00311:033552 4 600164376100 (ANQ PR6|164) 600164 376(0) 1 0 0 00
DBG(752389334)> CPU DBG: 00311:033553 4 033561601000 (TNZ 033561) 033561 601(0) 0 0 0 00
DBG(752389336)> CPU DBG: 00311:033554 4 040400236000 (LDQ 040400) 040400 236(0) 0 0 0 00
DBG(752389338)> CPU DBG: 00311:033555 4 600100756100 (STQ PR6|100) 600100 756(0) 1 0 0 00
DBG(752389340)> CPU DBG: 00311:033556 4 600100235100 (LDA PR6|100) 600100 235(0) 1 0 0 00
DBG(752389342)> CPU DBG: 00311:033557 4 600150755120 (STA PR6|150,N*) 600150 755(0) 1 0 1 00
DBG(752389344)> CPU DBG: 00311:033560 4 000631710100 (TRA PR0|631) 000631 710(0) 1 0 0 00
DBG(752526884)> CPU DBG: 00311:033502 4 001060627000 (EAX7 001060) 001060 627(0) 0 0 0 00
DBG(752526886)> CPU DBG: 00311:033503 4 700034352120 (EPP2 PR7|34,N*) 700034 352(0) 1 0 1 00
DBG(752526888)> CPU DBG: 00311:033504 4 201045272100 (TSP2 PR2|1045) 201045 272(0) 1 0 0 00
DBG(752526932)> CPU DBG: 00311:033507 4 027727710000 (TRA 027727) 027727 710(0) 0 0 0 00
ccom.log
Entry to yylex
DBG(489007908)> CPU TRACE: 00311:033502 4 001060627000 (EAX7 001060) 001060 627(0) 0 0 0 00^M
Unusual instructions:
DBG(489081216)> CPU TRACE: 00311:033536 4 100000503506 (ABD PR1|0,QL) 100000 503(1) 0 0 0 06^M
DBG(489081216)> CPU REGDUMPAQI: A=000000000000 Q=000000000011 IR:~BAR ^M
DBG(489081222)> CPU TRACE: 00311:033541 4 200000503506 (ABD PR2|0,QL) 200000 503(1) 0 0 0 06^M
DBG(489081222)> CPU REGDUMPAQI: A=000000000000 Q=000000001265 IR:~BAR ^M
Mid addrmod fault:
DBG(489399954)> CPU TRACE: 00311:033503 4 700034352120 (EPP2 PR7|34,N*) 700034 352(0) 1 0 1 00^M
DBG(489399954)> CPU APPENDING: doPtrReg(): PR[7] SNR=00234 RNR=4 WORDNO=000000 BITNO=00^M
DBG(489399954)> CPU APPENDING: doPtrReg(): n=7 offset=00034 TPR.CA=000034 TPR.TBR=0 TPR.TSR=00234 TPR.TRR=4^M
DBG(489399954)> CPU ADDRMOD: doComputedAddressFormation(Entry): operType:prepareCA TPR.CA=000034^M
DBG(489399954)> CPU ADDRMOD: doComputedAddressFormation(startCA): TAG=20(n*) Tm=20 Td=0^M
DBG(489399954)> CPU ADDRMOD: RI_MOD: Td=0^M
DBG(489399954)> CPU ADDRMOD: updateIWB: IWB was 700034352120 700034 n*^M
DBG(489399954)> CPU ADDRMOD: updateIWB: IWB now 000034352120 000034 n*^M
DBG(489399954)> CPU APPENDING: doAppendCycle(Entry) thisCycle=INDIRECT_WORD_FETCH^M
DBG(489399954)> CPU APPENDING: doAppendCycle(Entry) Address=000034^M
DBG(489399954)> CPU APPENDING: doAppendCycle(Entry) PPR.PRR=4 PPR.PSR=00311^M
DBG(489399954)> CPU APPENDING: doAppendCycle(Entry) TPR.TRR=4 TPR.TSR=00234^M
DBG(489399954)> CPU APPENDING: doAppendCycle(A)^M
DBG(489399954)> CPU APPENDING: fetchSDWfromSDWAM(0):segno=00234^M
DBG(489399954)> CPU APPENDING: fetchSDWfromSDWAM(0): SDWAM disabled^M
DBG(489399954)> CPU APPENDING: doAppendCycle(A):SDW for segment 00234 not in SDWAM^M
DBG(489399954)> CPU APPENDING: doAppendCycle(A):DSBR.U=0^M
DBG(489399954)> CPU APPENDING: fetchDSPTW segno 0234^M
DBG(489399954)> CPU APPENDING: fetchDSPTW x1 00 y1 0470 DSBR.ADDR 017417674 PTWx1 0610200401125 PTW0: ADDR 0610200 U 1 M 1 F 1 FC 1^M
DBG(489399954)> CPU APPENDING: fetchPSDW(0):segno=00234^M
DBG(489399954)> CPU APPENDING: fetchPSDW y1 0470 p->ADDR 0610200 SDW 0174571704444 0017777140000 ADDR 017457170 BOUND 01777 U 0 F 1^M
DBG(489399954)> CPU APPENDING: loadSDWAM: SDWAM disabled^M
DBG(489399954)> CPU APPENDING: doAppendCycle(A) R1 4 R2 4 R3 4^M
DBG(489399954)> CPU APPENDING: doAppendCycle(B)^M
DBG(489399954)> CPU APPENDING: doAppendCycle(B):!STR-OP^M
DBG(489399954)> CPU APPENDING: doAppendCycle(G)^M
DBG(489399954)> CPU APPENDING: fetchPTWfromPTWAM: PTWAM disabled^M
DBG(489399954)> CPU APPENDING: fetchPTW address 17457170^M
DBG(489399954)> CPU APPENDING: fetchPTW x2 00 y2 034 sdw->ADDR 017457170 PTWx2 0610400401505 PTW0: ADDR 0610400 U 1 M 1 F 1 FC 1^M
DBG(489399954)> CPU APPENDING: loadPTWAM: PTWAM disabled^M
DBG(489399954)> CPU APPENDING: doAppendCycle(I)^M
DBG(489399954)> CPU APPENDING: doAppendCycle(H:FAP): (00234:000034) finalAddress=61040034^M
DBG(489399954)> CPU APPENDING: doAppendCycle(HI)^M
DBG(489399954)> CPU APPENDING: Read (Actual) Read: iefpFinalAddress=61040034 readData=000257000043^M
DBG(489399954)> CPU APPENDING: doITS/ITP: indword:000257000043 Tag:20^M
DBG(489399954)> CPU APPENDING: doAppendCycle(Entry) thisCycle=INDIRECT_WORD_FETCH^M
DBG(489399954)> CPU APPENDING: doAppendCycle(Entry) Address=000035^M
DBG(489399954)> CPU APPENDING: doAppendCycle(Entry) PPR.PRR=4 PPR.PSR=00311^M
DBG(489399954)> CPU APPENDING: doAppendCycle(Entry) TPR.TRR=4 TPR.TSR=00234^M
DBG(489399954)> CPU APPENDING: doAppendCycle(A)^M
DBG(489399954)> CPU APPENDING: fetchSDWfromSDWAM(0):segno=00234^M
DBG(489399954)> CPU APPENDING: fetchSDWfromSDWAM(0): SDWAM disabled^M
DBG(489399954)> CPU APPENDING: doAppendCycle(A):SDW for segment 00234 not in SDWAM^M
DBG(489399954)> CPU APPENDING: doAppendCycle(A):DSBR.U=0^M
DBG(489399954)> CPU APPENDING: fetchDSPTW segno 0234^M
DBG(489399954)> CPU APPENDING: fetchDSPTW x1 00 y1 0470 DSBR.ADDR 017417674 PTWx1 0610200401125 PTW0: ADDR 0610200 U 1 M 1 F 1 FC 1^M
DBG(489399954)> CPU APPENDING: fetchPSDW(0):segno=00234^M
DBG(489399954)> CPU APPENDING: fetchPSDW y1 0470 p->ADDR 0610200 SDW 0174571704444 0017777140000 ADDR 017457170 BOUND 01777 U 0 F 1^M
DBG(489399954)> CPU APPENDING: loadSDWAM: SDWAM disabled^M
DBG(489399954)> CPU APPENDING: doAppendCycle(A) R1 4 R2 4 R3 4^M
DBG(489399954)> CPU APPENDING: doAppendCycle(B)^M
DBG(489399954)> CPU APPENDING: doAppendCycle(B):!STR-OP^M
DBG(489399954)> CPU APPENDING: doAppendCycle(G)^M
DBG(489399954)> CPU APPENDING: fetchPTWfromPTWAM: PTWAM disabled^M
DBG(489399954)> CPU APPENDING: fetchPTW address 17457170^M
DBG(489399954)> CPU APPENDING: fetchPTW x2 00 y2 035 sdw->ADDR 017457170 PTWx2 0610400401505 PTW0: ADDR 0610400 U 1 M 1 F 1 FC 1^M
DBG(489399954)> CPU APPENDING: loadPTWAM: PTWAM disabled^M
DBG(489399954)> CPU APPENDING: doAppendCycle(I)^M
DBG(489399954)> CPU APPENDING: doAppendCycle(H:FAP): (00234:000035) finalAddress=61040035^M
DBG(489399954)> CPU APPENDING: doAppendCycle(HI)^M
DBG(489399954)> CPU APPENDING: Read (Actual) Read: iefpFinalAddress=61040035 readData=021736000000^M
DBG(489399954)> CPU APPENDING: doITS/ITP: YPair= 000257000043 021736000000^M
DBG(489399954)> CPU APPENDING: ITS Pair: SEGNO=257 RN=0 WORDNO=21736 BITNO=0 MOD=0^M
DBG(489399954)> CPU APPENDING: ITS Pair Ring: RN 0 RSDWH_R1 4 TRR 4 max 4^M
DBG(489399954)> CPU ADDRMOD: RI_MOD: indword=000257000043 TPR.CA=021736 rTAG=00^M
DBG(489399954)> CPU ADDRMOD: updateIWB: IWB was 000034352120 000034 n*^M
DBG(489399954)> CPU ADDRMOD: updateIWB: IWB now 021736352100 021736 ^M
DBG(489399954)> CPU ADDRMOD: doComputedAddressFormation(startCA): TAG=00() Tm=0 Td=0^M
DBG(489399954)> CPU REGDUMPAQI: A=000002000004 Q=000000000000 IR:~BAR ^M
DBG(489399957)> CPU TRACE: 033504 000510657220 (SCU 000510,N*) 000510 657(0) 0 1 1 00^M
It doesn't resume the instruction; must have been a TRO
DBG(489400842)> CPU TRACE: 00311:033504 4 201045272100 (TSP2 PR2|1045) 201045 272(0) 1 0 0 00^M
The error text is interesting:
>system_library_3rd_party>C_COMPILER>executable>ccom hello.c
use\000c_d\000fin\000tio\000s
\000"", line 1: illegal character: 000 (octal)
Error: out_of_bounds at common.cob$cerror|170
(>system_library_3rd_party>C_COMPILER>executable>ccom)
referencing 60162|145463
There was an attempt to use an invalid segment number.
60162|145463 might be valid without the leading 6.
Where does 145463 appear in the trace?
DBG(490116084)> CPU TRACE: 00311:173550 4 700006237120 (LDAQ PR7|6,N*) 700006 237(0) 1 0 1 00^M
DBG(490116084)> CPU ADDRMOD: RI_MOD: tmpCA(After)=145463^M
DBG(490116084)> CPU APPENDING: doAppendCycle(Entry) Address=145463^M
DBG(490116086)> CPU TRACE: 173550 000550657220 (SCU 000550,N*) 000550 657(0) 0 1 1 00^M
DBG(490116086)> CPU APPENDING: Write(Actual) Write: iefpFinalAddress=61012115 writeData=145463000000^M
CU[5] is CA
The complete CU
DBG(490116086)> CPU APPENDING: Write(Actual) Write: iefpFinalAddress=61012110 writeData=400311050040 ring 4, seg 311, fetch final address paged
DBG(490116086)> CPU APPENDING: Write(Actual) Write: iefpFinalAddress=61012111 writeData=000004000051 out of seg bnds, f/i aaddr 14, is fault
DBG(490116086)> CPU APPENDING: Write(Actual) Write: iefpFinalAddress=61012112 writeData=460162000000 trr 4, tsr 60162 <---- oh yes
DBG(490116086)> CPU APPENDING: Write(Actual) Write: iefpFinalAddress=61012113 writeData=000000000063 temp bit 63
DBG(490116086)> CPU APPENDING: Write(Actual) Write: iefpFinalAddress=61012114 writeData=173550000200 IC 17355
DBG(490116086)> CPU APPENDING: Write(Actual) Write: iefpFinalAddress=61012115 writeData=145463000000 CA 145463 <-- yep
DBG(490116086)> CPU APPENDING: Write(Actual) Write: iefpFinalAddress=61012116 writeData=145163237120 iwb
DBG(490116086)> CPU APPENDING: Write(Actual) Write: iefpFinalAddress=61012117 writeData=000044733000
This is the instruction that is going astray
DBG(523974428)> CPU TRACE: 00311:173550 4 700006237120 (LDAQ PR7|6,N*) 700006 237(0) 1 0 1 00
DBG(523974428)> CPU APPENDING: doPtrReg(): PR[7] SNR=00234 RNR=4 WORDNO=011454 BITNO=00
DBG(523974428)> CPU APPENDING: doPtrReg(): n=7 offset=00006 TPR.CA=011462 TPR.TBR=0 TPR.TSR=00234 TPR.TRR=4
DBG(523974428)> CPU ADDRMOD: doComputedAddressFormation(Entry): operType:readCYpair2 TPR.CA=011462
DBG(523974428)> CPU ADDRMOD: doComputedAddressFormation(startCA): TAG=20(n*) Tm=20 Td=0
DBG(523974428)> CPU ADDRMOD: RI_MOD: Td=0
DBG(523974428)> CPU ADDRMOD: updateIWB: IWB was 700006237120 700006 n*
DBG(523974428)> CPU ADDRMOD: updateIWB: IWB now 011462237120 011462 n*
DBG(523974428)> CPU APPENDING: doAppendCycle(Entry) thisCycle=INDIRECT_WORD_FETCH
DBG(523974428)> CPU APPENDING: doAppendCycle(Entry) Address=011462
DBG(523974428)> CPU APPENDING: doAppendCycle(Entry) PPR.PRR=4 PPR.PSR=00311
DBG(523974428)> CPU APPENDING: doAppendCycle(Entry) TPR.TRR=4 TPR.TSR=00234
DBG(523974428)> CPU APPENDING: doAppendCycle(A)
DBG(523974428)> CPU APPENDING: fetchSDWfromSDWAM(0):segno=00234
DBG(523974428)> CPU APPENDING: fetchSDWfromSDWAM(0): SDWAM disabled
DBG(523974428)> CPU APPENDING: doAppendCycle(A):SDW for segment 00234 not in SDWAM
DBG(523974428)> CPU APPENDING: doAppendCycle(A):DSBR.U=0
DBG(523974428)> CPU APPENDING: fetchDSPTW segno 0234
DBG(523974428)> CPU APPENDING: fetchDSPTW x1 00 y1 0470 DSBR.ADDR 017417674 PTWx1 0611240401125 PTW0: ADDR 0611240 U 1 M 1 F 1 FC 1
DBG(523974428)> CPU APPENDING: fetchPSDW(0):segno=00234
DBG(523974428)> CPU APPENDING: fetchPSDW y1 0470 p->ADDR 0611240 SDW 0174571704444 0017777140000 ADDR 017457170 BOUND 01777 U 0 F 1
DBG(523974428)> CPU APPENDING: loadSDWAM: SDWAM disabled
DBG(523974428)> CPU APPENDING: doAppendCycle(A) R1 4 R2 4 R3 4
DBG(523974428)> CPU APPENDING: doAppendCycle(B)
DBG(523974428)> CPU APPENDING: doAppendCycle(B):!STR-OP
DBG(523974428)> CPU APPENDING: doAppendCycle(G)
DBG(523974428)> CPU APPENDING: fetchPTWfromPTWAM: PTWAM disabled
DBG(523974428)> CPU APPENDING: fetchPTW address 17457174
DBG(523974428)> CPU APPENDING: fetchPTW x2 04 y2 01462 sdw->ADDR 017457170 PTWx2 0611760401105 PTW0: ADDR 0611760 U 1 M 1 F 1 FC 1
DBG(523974428)> CPU APPENDING: loadPTWAM: PTWAM disabled
DBG(523974428)> CPU APPENDING: doAppendCycle(I)
DBG(523974428)> CPU APPENDING: doAppendCycle(H:FAP): (00234:011462) finalAddress=61177462
DBG(523974428)> CPU APPENDING: doAppendCycle(HI)
DBG(523974428)> CPU APPENDING: Read (Actual) Read: iefpFinalAddress=61177462 readData=160162157143
DBG(523974428)> CPU APPENDING: doITS/ITP: indword:160162157143 Tag:20
DBG(523974428)> CPU APPENDING: doAppendCycle(Entry) thisCycle=INDIRECT_WORD_FETCH
DBG(523974428)> CPU APPENDING: doAppendCycle(Entry) Address=011463
DBG(523974428)> CPU APPENDING: doAppendCycle(Entry) PPR.PRR=4 PPR.PSR=00311
DBG(523974428)> CPU APPENDING: doAppendCycle(Entry) TPR.TRR=4 TPR.TSR=00234
DBG(523974428)> CPU APPENDING: doAppendCycle(A)
DBG(523974428)> CPU APPENDING: fetchSDWfromSDWAM(0):segno=00234
DBG(523974428)> CPU APPENDING: fetchSDWfromSDWAM(0): SDWAM disabled
DBG(523974428)> CPU APPENDING: doAppendCycle(A):SDW for segment 00234 not in SDWAM
DBG(523974428)> CPU APPENDING: doAppendCycle(A):DSBR.U=0
DBG(523974428)> CPU APPENDING: fetchDSPTW segno 0234
DBG(523974428)> CPU APPENDING: fetchDSPTW x1 00 y1 0470 DSBR.ADDR 017417674 PTWx1 0611240401125 PTW0: ADDR 0611240 U 1 M 1 F 1 FC 1
DBG(523974428)> CPU APPENDING: fetchPSDW(0):segno=00234
DBG(523974428)> CPU APPENDING: fetchPSDW y1 0470 p->ADDR 0611240 SDW 0174571704444 0017777140000 ADDR 017457170 BOUND 01777 U 0 F 1
DBG(523974428)> CPU APPENDING: loadSDWAM: SDWAM disabled
DBG(523974428)> CPU APPENDING: doAppendCycle(A) R1 4 R2 4 R3 4
DBG(523974428)> CPU APPENDING: doAppendCycle(B)
DBG(523974428)> CPU APPENDING: doAppendCycle(B):!STR-OP
DBG(523974428)> CPU APPENDING: doAppendCycle(G)
DBG(523974428)> CPU APPENDING: fetchPTWfromPTWAM: PTWAM disabled
DBG(523974428)> CPU APPENDING: fetchPTW address 17457174
DBG(523974428)> CPU APPENDING: fetchPTW x2 04 y2 01463 sdw->ADDR 017457170 PTWx2 0611760401105 PTW0: ADDR 0611760 U 1 M 1 F 1 FC 1
DBG(523974428)> CPU APPENDING: loadPTWAM: PTWAM disabled
DBG(523974428)> CPU APPENDING: doAppendCycle(I)
DBG(523974428)> CPU APPENDING: doAppendCycle(H:FAP): (00234:011463) finalAddress=61177463
DBG(523974428)> CPU APPENDING: doAppendCycle(HI)
DBG(523974428)> CPU APPENDING: Read (Actual) Read: iefpFinalAddress=61177463 readData=145163163137
DBG(523974428)> CPU APPENDING: doITS/ITP: YPair= 160162157143 145163163137
That is clearly wrong; segno 60162; also. the leading digit of the ITS even word should be zero.
DBG(523974428)> CPU APPENDING: ITS Pair: SEGNO=60162 RN=1 WORDNO=145163 BITNO=63 MOD=37
DBG(523974428)> CPU APPENDING: ITS Pair Ring: RN 1 RSDWH_R1 4 TRR 4 max 4
DBG(523974428)> CPU ADDRMOD: RI_MOD: indword=160162157143 TPR.CA=145163 rTAG=37
DBG(523974428)> CPU ADDRMOD: updateIWB: IWB was 011462237120 011462 n*
DBG(523974428)> CPU ADDRMOD: updateIWB: IWB now 145163237137 145163 7*
DBG(523974428)> CPU ADDRMOD: doComputedAddressFormation(startCA): TAG=37(7*) Tm=20 Td=17
DBG(523974428)> CPU ADDRMOD: RI_MOD: Td=17
DBG(523974428)> CPU ADDRMOD: RI_MOD: Cr=000300 tmpCA(Before)=145163
DBG(523974428)> CPU ADDRMOD: RI_MOD: tmpCA(After)=145463
DBG(523974428)> CPU ADDRMOD: updateIWB: IWB was 145163237137 145163 7*
DBG(523974428)> CPU ADDRMOD: updateIWB: IWB now 145163237120 145163 n*
DBG(523974428)> CPU APPENDING: doAppendCycle(Entry) thisCycle=INDIRECT_WORD_FETCH
DBG(523974428)> CPU APPENDING: doAppendCycle(Entry) Address=145463
DBG(523974428)> CPU APPENDING: doAppendCycle(Entry) PPR.PRR=4 PPR.PSR=00311
DBG(523974428)> CPU APPENDING: doAppendCycle(Entry) TPR.TRR=4 TPR.TSR=60162
DBG(523974428)> CPU APPENDING: doAppendCycle(A)
DBG(523974428)> CPU APPENDING: fetchSDWfromSDWAM(0):segno=60162
DBG(523974428)> CPU APPENDING: fetchSDWfromSDWAM(0): SDWAM disabled
DBG(523974428)> CPU APPENDING: doAppendCycle(A):SDW for segment 60162 not in SDWAM
DBG(523974428)> CPU APPENDING: doAppendCycle(A):DSBR.U=0
DBG(523974428)> CPU APPENDING: fetchDSPTW segno 060162
address 61177462
data 160162157143 'proc'
Segment 0234 is the process stack.
Okay, I wasn't seeing the physical address written, but I was seeing that data pattern written elsewhere. The stack moved in
physical memory.
The append cycle that fetches the word from the stack.
DBG(490116084)> CPU APPENDING: doAppendCycle(Entry) thisCycle=INDIRECT_WORD_FETCH^M
DBG(490116084)> CPU APPENDING: doAppendCycle(Entry) Address=011462^M
DBG(490116084)> CPU APPENDING: doAppendCycle(Entry) PPR.PRR=4 PPR.PSR=00311^M
DBG(490116084)> CPU APPENDING: doAppendCycle(Entry) TPR.TRR=4 TPR.TSR=00234^M
Okay, the read data 160162157143 145163163137 is clearly the string 'process_', which, by happenstance, contains a 43 in the tag
location. Is the code inappropriately following a tag?
Looking at AL39 and the instruction trace, I'm pretty sure the emulator is correct; the problem is earlier.
The data is word 011462 in the stack; where is 011462 used prior in the code?
DBG(306596360)> CPU TRACE: 00311:170215 4 100000503506 (ABD PR1|0,QL) 100000 503(1) 0 0 0 06
DBG(306596360)> CPU TRACE: ABD AR1 was WORDNO 011462 BITNO 0 AR_BITNO 0 AR_CHAR 0
DBG(306596360)> CPU TRACE: ABD A 1 address 00000 reg 6 cr 360 (000000000550)
DBG(306596360)> CPU TRACE: ABD bitStringCnt 000000000550 wordCnt 000000000012 bitCnt 000000000000
DBG(306596360)> CPU TRACE: ABD address 000000
DBG(306596360)> CPU TRACE: ABD address+wordCnt 000012
DBG(306596360)> CPU TRACE: wordno 011462 address 000012
DBG(306596360)> CPU TRACE: setting address 011474
DBG(306596360)> CPU TRACE: a charPortion 000000000000 bitPortion 000000000000
DBG(306596360)> CPU TRACE: b charPortion 000000000000 bitPortion 000000000000
DBG(306596360)> CPU TRACE: c charPortion 000000000000 bitPortion 000000000000
DBG(306596360)> CPU TRACE: d charPortion 000000000000 bitPortion 000000000000
DBG(306596360)> CPU TRACE: wordno 011474
DBG(306596360)> CPU TRACE: setting char 000000000000 bit 000000000000
DBG(306596360)> CPU TRACE: wordno masked 011474
DBG(306596360)> CPU TRACE: ABD AR1 is WORDNO 011474 BITNO 0 AR_BITNO 0 AR_CHAR 0
DBG(306596360)> CPU REGDUMPAQI: A=000000000000 Q=000000000550 IR:~BAR
PR1 is set:
DBG(306596356)> CPU TRACE: 00311:170213 4 600152351520 (EPP1 PR6|152,N*) 600152 351(1) 1 0 1 00
DBG(306596356)> CPU APPENDING: doPtrReg(): PR[6] SNR=00234 RNR=4 WORDNO=010340 BITNO=00
DBG(306596356)> CPU APPENDING: doPtrReg(): n=6 offset=00152 TPR.CA=010512 TPR.TBR=0 TPR.TSR=00234 TPR.TRR=4
DBG(306596356)> CPU ADDRMOD: doComputedAddressFormation(Entry): operType:prepareCA TPR.CA=010512
DBG(306596356)> CPU ADDRMOD: doComputedAddressFormation(startCA): TAG=20(n*) Tm=20 Td=0
DBG(306596356)> CPU ADDRMOD: RI_MOD: Td=0
DBG(306596356)> CPU ADDRMOD: updateIWB: IWB was 600152351520 600152 n*
DBG(306596356)> CPU ADDRMOD: updateIWB: IWB now 010512351520 010512 n*
DBG(306596356)> CPU APPENDING: doAppendCycle(Entry) thisCycle=INDIRECT_WORD_FETCH
DBG(306596356)> CPU APPENDING: doAppendCycle(Entry) Address=010512
DBG(306596356)> CPU APPENDING: doAppendCycle(Entry) PPR.PRR=4 PPR.PSR=00311
DBG(306596356)> CPU APPENDING: doAppendCycle(Entry) TPR.TRR=4 TPR.TSR=00234
DBG(306596356)> CPU APPENDING: doAppendCycle(A)
DBG(306596356)> CPU APPENDING: fetchSDWfromSDWAM(0):segno=00234
DBG(306596356)> CPU APPENDING: fetchSDWfromSDWAM(0): SDWAM disabled
DBG(306596356)> CPU APPENDING: doAppendCycle(A):SDW for segment 00234 not in SDWAM
DBG(306596356)> CPU APPENDING: doAppendCycle(A):DSBR.U=0
DBG(306596356)> CPU APPENDING: fetchDSPTW segno 0234
DBG(306596356)> CPU APPENDING: fetchDSPTW x1 00 y1 0470 DSBR.ADDR 017417674 PTWx1 0606400401125 PTW0: ADDR 0606400 U 1 M 1 F 1 FC 1
DBG(306596356)> CPU APPENDING: fetchPSDW(0):segno=00234
DBG(306596356)> CPU APPENDING: fetchPSDW y1 0470 p->ADDR 0606400 SDW 0174570444444 0017777140000 ADDR 017457044 BOUND 01777 U 0 F 1
DBG(306596356)> CPU APPENDING: loadSDWAM: SDWAM disabled
DBG(306596356)> CPU APPENDING: doAppendCycle(A) R1 4 R2 4 R3 4
DBG(306596356)> CPU APPENDING: doAppendCycle(B)
DBG(306596356)> CPU APPENDING: doAppendCycle(B):!STR-OP
DBG(306596356)> CPU APPENDING: doAppendCycle(G)
DBG(306596356)> CPU APPENDING: fetchPTWfromPTWAM: PTWAM disabled
DBG(306596356)> CPU APPENDING: fetchPTW address 17457050
DBG(306596356)> CPU APPENDING: fetchPTW x2 04 y2 0512 sdw->ADDR 017457044 PTWx2 0607140401105 PTW0: ADDR 0607140 U 1 M 1 F 1 FC 1
DBG(306596356)> CPU APPENDING: loadPTWAM: PTWAM disabled
DBG(306596356)> CPU APPENDING: doAppendCycle(I)
DBG(306596356)> CPU APPENDING: doAppendCycle(H:FAP): (00234:010512) finalAddress=60714512
DBG(306596356)> CPU APPENDING: doAppendCycle(HI)
DBG(306596356)> CPU APPENDING: Read (Actual) Read: iefpFinalAddress=60714512 readData=000315400043
DBG(306596356)> CPU APPENDING: doITS/ITP: indword:000315400043 Tag:20
DBG(306596356)> CPU APPENDING: doAppendCycle(Entry) thisCycle=INDIRECT_WORD_FETCH
DBG(306596356)> CPU APPENDING: doAppendCycle(Entry) Address=010513
DBG(306596356)> CPU APPENDING: doAppendCycle(Entry) PPR.PRR=4 PPR.PSR=00311
DBG(306596356)> CPU APPENDING: doAppendCycle(Entry) TPR.TRR=4 TPR.TSR=00234
DBG(306596356)> CPU APPENDING: doAppendCycle(A)
DBG(306596356)> CPU APPENDING: fetchSDWfromSDWAM(0):segno=00234
DBG(306596356)> CPU APPENDING: fetchSDWfromSDWAM(0): SDWAM disabled
DBG(306596356)> CPU APPENDING: doAppendCycle(A):SDW for segment 00234 not in SDWAM
DBG(306596356)> CPU APPENDING: doAppendCycle(A):DSBR.U=0
DBG(306596356)> CPU APPENDING: fetchDSPTW segno 0234
DBG(306596356)> CPU APPENDING: fetchDSPTW x1 00 y1 0470 DSBR.ADDR 017417674 PTWx1 0606400401125 PTW0: ADDR 0606400 U 1 M 1 F 1 FC 1
DBG(306596356)> CPU APPENDING: fetchPSDW(0):segno=00234
DBG(306596356)> CPU APPENDING: fetchPSDW y1 0470 p->ADDR 0606400 SDW 0174570444444 0017777140000 ADDR 017457044 BOUND 01777 U 0 F 1
DBG(306596356)> CPU APPENDING: loadSDWAM: SDWAM disabled
DBG(306596356)> CPU APPENDING: doAppendCycle(A) R1 4 R2 4 R3 4
DBG(306596356)> CPU APPENDING: doAppendCycle(B)
DBG(306596356)> CPU APPENDING: doAppendCycle(B):!STR-OP
DBG(306596356)> CPU APPENDING: doAppendCycle(G)
DBG(306596356)> CPU APPENDING: fetchPTWfromPTWAM: PTWAM disabled
DBG(306596356)> CPU APPENDING: fetchPTW address 17457050
DBG(306596356)> CPU APPENDING: fetchPTW x2 04 y2 0513 sdw->ADDR 017457044 PTWx2 0607140401105 PTW0: ADDR 0607140 U 1 M 1 F 1 FC 1
DBG(306596356)> CPU APPENDING: loadPTWAM: PTWAM disabled
DBG(306596356)> CPU APPENDING: doAppendCycle(I)
DBG(306596356)> CPU APPENDING: doAppendCycle(H:FAP): (00234:010513) finalAddress=60714513
DBG(306596356)> CPU APPENDING: doAppendCycle(HI)
DBG(306596356)> CPU APPENDING: Read (Actual) Read: iefpFinalAddress=60714513 readData=011462000000
DBG(306596356)> CPU APPENDING: doITS/ITP: YPair= 000315400043 011462000000
DBG(306596356)> CPU APPENDING: ITS Pair: SEGNO=315 RN=4 WORDNO=11462 BITNO=0 MOD=0
DBG(306596356)> CPU APPENDING: ITS Pair Ring: RN 4 RSDWH_R1 4 TRR 4 max 4
DBG(306596356)> CPU ADDRMOD: RI_MOD: indword=000315400043 TPR.CA=011462 rTAG=00
DBG(306596356)> CPU ADDRMOD: updateIWB: IWB was 010512351520 010512 n*
DBG(306596356)> CPU ADDRMOD: updateIWB: IWB now 011462351500 011462
DBG(306596356)> CPU ADDRMOD: doComputedAddressFormation(startCA): TAG=00() Tm=0 Td=0
DBG(306596356)> CPU REGDUMPAQI: A=000000000000 Q=000000000072 IR:~BAR Neg
DBG(306596356)> CPU REGDUMPPR: PR1/ab: SNR=00315 RNR=4 WORDNO=011462 BITNO:00
DBG(306596356)> CPU REGDUMPPR: PR6/sp: SNR=00234 RNR=4 WORDNO=010340 BITNO:00
Fetched an ITP from the stack; 315:011462. 315 is the heap; why were we looking in the stack earlier?
Looking at the problem instruction:
DBG(523974428)> CPU TRACE: 00311:173550 4 700006237120 (LDAQ PR7|6,N*) 700006 237(0) 1 0 1 00
DBG(523974428)> CPU APPENDING: doPtrReg(): PR[7] SNR=00234 RNR=4 WORDNO=011454 BITNO=00
DBG(523974428)> CPU APPENDING: doPtrReg(): n=7 offset=00006 TPR.CA=011462 TPR.TBR=0 TPR.TSR=00234 TPR.TRR=4
PR7 is pointing to the stack; not the heap?
Edit 2015-08-15: others fixes have changed the error message formatting, and cleaned up the crash. The earlier debugging was probably chasing the crash, and is now irrelevant.
>system_library_3rd_party>C_COMPILER>executable>ccom hello.c
use c_definitions
"", line 1: illegal character: 000 (octal)
"", line 1: cannot recover from earlier errors: goodbye!
r 08:19 1.101 164