Debugging the C compiler

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
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License