These programs implement a core dump facility for RSX-11D and IAS, for user tasks (rather than CDA which only analyses system crashes). It is useful for finding bugs in programs which are "already" debugged but aborted unexpectedly (and under possibly unknown conditions), for programs which cannot run under odt for various reasons, or for finding hardware memory errors not occurring as parity errors. It is not indended as a replacement for odt or ddt which are interactive debugging tools and which in most cases allow much faster debugging than is possible with such a dump facility, which is more like a batch stream debugging tool than most RSX software. The core dump system consists of two parts, a subroutine to .TKTN. which dumps appropriate aborting tasks' images into binary files, and an analysis program which will format the output into a more readable form. Log in to a system or privileged account, referred to as [?,?]. To install the system, it is first necessary to assemble the fixes to .TKTN.. Edit the file 'DMPCOR.MAC'. On the third page are a number of assembly parameters regarding the precise types of tasks which will be dumped, the type of information to dump, and where to place the dump file. There is also a selection for a source level or an object level change to .TKTN.; if you do not have sources or do not wish to make a source level change the symbol 'patch' must be defined. After these changes have been made, assemble the file: MCR>mac dmpcor,lp:/li:ttm=dmpcor next: 1) If you are making a source level change, edit the file [311,13]TKTN.MAC. Locate the line beginning with 'START:'. After that symbol, before the line 'ATLSCN: MOV PSEXP,-(SP)', place an instruction 'CALL DMPINI'. Next find the line 'MOV #"SP,TMPL2+2'. Find the next call to 'TYPREG' after that line and place an instruction 'CALL DMPCOR' after the call to TYPREG. Exit the editor and assemble .TKTN.: MCR>mac tktn,lp:/li:ttm=[311,13]tktn 2) If you are making an object level patch, edit the file 'TKTNPAT.MAC,' and select the operating system and version which you are using. Next assemble the file: MCR>mac tktnpat,lp:/li:ttm=tktnpat Now apply the patch file to [11,13]TKTN.OBJ (it might be a good idea to keep a copy in case of mishap). MCR>ins [11,1]pat MCR>pat tktn=[11,13]tktn,[?,?]tktnpat Now build .TKTN., remove .TKTN., and re-install .TKTN. Be careful that if you build .TKTN. with the command file provided with the distribution of RSX-11D or IAS that you must increase the amount of stack (required for I/O processing by FCS) or you will crash your system the first time a task aborts. MCR>tkb @tktn MCR>rem .tktn. MCR>ins tktn Now it is time to build the core dump analysis task. The default page size can be modified by changing the symbol 'PAGSIZ' on the second page; the current default is 59. The operating system should also be selected (the choices are RSX-11D v6.2 (or IAS v2.x), IAS v3.0, and IAS v3.1). There are no other conditional assemblies, so: MCR>mac coreanl,lp:/li:ttm=coreanl MCR>mac prfcs,lp:/li:ttm=prfcs MCR>tkb @coreanl MCR>ins coreanl The core dump analysis task is named ...COR. It has twelve switches explained in more detail on page 1 in the assembler source file: /r5 dump radix 50 on task core /by dump in byte mode binary; /-by dumps word mode /as print ascii as well as binary /n5 no radix 50 even on system tables /ro dump task read-only section (only if there) /cm dump common areas (libraries only if /ro also) /rw dump task read/write section /sy dump system tables /hd dump task header /sp spool listing file and delete when done. /md:x:y dump task core from address x to y. /ps:x page size is to be x. defaults: /-r5/-by/as/-n5/-ro/-cm/rw/sy/hd/sp/md:0:177777/ps:59 The program will not attempt a core dump if a fault occurrs which does not print the registers (i. e., disk read err, disk write err, via 'exit' with pending i/o, memory parity error) One word of caution: the EXEC and .TKTN. use the A.FM+0 word in the ATL node of an aborting task to hold the termination code, and the task's status is always 'suspended for termination message', so there is no getting the task's event flag masks 1-16 or the current or ast status out after a dump !!! Also note that under IAS timesharing, the current version will not support dumping a timesharing task! The patch to PI.... should be rather simple, but I just haven't gotten around to it. The technique would be similar to the patch to .TKTN. Note that the current version will work on real-time tasks or on tasks under control of the heuristic scheduler under a multi-user system. These programs have a few known deficiecnies, but no great difficulties should be encountered because of them: 1) The programs do not handle I/D space. If it is ever implemented, the .TKTN. subroutine probably would not need to be modified, but the COREANL program (particularly the "GETPDR" subroutine) would. This does not seem serious at the present time. 2) More importently, neither program implements the plas feature. The problem with PLAS is that it is rather unpleasant for the DMPCOR subroutine to extract the information from the PLAS regions because of checkpointing and shuffling considerations. A solution may become available eventually.