ZMF SYSMDUMPs – the why’s, how’s, do’s and do not’s...


As much as we may hate to admit it, problems do sometimes arise in the ZMF Server started task that may lead to an abend (and I hasten to stress that these are not always Serena's fault!).  Also, back in the dim and distant past that coincided with the release of ZMF 7.1, the recommended started task dump file contained in the SERVER sample CNTL member changed from the tried and trusted:

//SYSUDUMP  DD SYSOUT=*                             *Abend list        

to the new (and slightly mysterious for some):

//SYSMDUMP  DD DISP=(MOD,CATLG,CATLG),             * SYSMDUMP         
//             DSN=somnode.SERCOMC.SYSMDUMP( 1),                      
//             UNIT=SYSDA,SPACE=(CYL,(200,100),RLSE),                 
//             DCB=(DSORG=PS,RECFM=FBS,LRECL=4160,BLKSIZE=4160)       

Many of our customers are comfortable with SYSMDUMPs.  However, if you are unfamiliar with this format, have never made the change to your started tasks’ JCL, are wondering why this happened, how these should be handled or are interested in some of the common mistakes we see customers making with them, then please read on.

1. So, firstly, why the change?

It’s very simple really: SYSMDUMPs contain significantly more useful information in diagnosing problems than their SYSUDUMP alternative.  

The ZMF Server started task is a complex piece of software that manages multiple subtasks within a single address space.  As additional functionality is added to both z/OS and ZMF over time, SYSMDUMPs are the best option in trying to ensure that all information that could be relevant to any given problem within the started task is captured at the first time of asking.  

In the past, if a problem was particularly complex we would sometimes ask customers to set a SLIP trap to capture an SVC dump if/when a problem reoccurs.  Even with a SYSMDUMP specified, this may still be appropriate in certain situations.  However, if we start with a SYSMDUMP much of the information that will be captured by the SVC SLIP will already be available, maximising the chances of diagnosing any problems with the fewest number of iterations. 

2. Must I make this change?  Can I stick with my SYSUDUMP files? 

The simple answers are “no, you do not have to make this change” and “yes, you can stick with your SYSUDUMP files”.  However, it is very much in everyone’s best interests if you do switch over to SYSMDUMPs in the started task.  

Serena will always research and attempt to diagnose any ZMF problem from a SYSUDUMP if that is all that is available.  However, and as previously stated, both the operating system and ZMF itself are continually evolving and becoming more complex in the process.  SYSUDUMPs often do not catch sufficient diagnostic information that will allow us to resolve a problem upon first occurrence, thus elongating the time required to resolve any problems.  So, to minimse this diagnosis period, if you have not already switched over to using a SYSMDUMP in your started task JCL it is highly recommended that you do so at the earliest opportunity.

3. What do I do with a SYSMDUMP?

If a problem occurs and a SYSMDUMP is captured you will typically see the following type of messages in your started task’s JESMSGLG output file:

06.13.44 S0919451  SER0953E Task abnormally terminated: Comp=S0C4 Function=SCAN/CONTINUE NSI=15836EE0  
06.14.21 S0919451  IEA995I SYMPTOM DUMP OUTPUT  310                                                    
   310             SYSTEM COMPLETION CODE=0C4  REASON CODE=00000010                                    
   310              TIME=06.13.44  SEQ=07487  CPU=0000  ASID=0167                                      
   310              PSW AT TIME OF ERROR  078D0000   95836EE0  ILC 4  INTC 10                          
   310                ACTIVE LOAD MODULE           ADDRESS=15834B08  OFFSET=000023D8                   
   310                NAME=SERBSAM                                                                     
   310                DATA AT PSW  15836EDA - 9024A0B8  18415830  400C1813                             
   310                AR/GR 0: 00000000/11000000   1: 00000000/5CDDC010                                
   310                      2: 00000000/0000001B   3: 00000000/00000044                                
   310                      4: 00000000/5CDDC010   5: 00000000/00000004                                
   310                      6: 00000000/23CAA000   7: 00000000/23CD8000                                
   310                      8: 00000000/9586C09C   9: 00000000/95837272                                
   310                      A: 00000000/00000000   B: 00000000/15838B18                                
   310                      C: 00000000/23CA9000   D: 00000000/23CB8170                                
   310                      E: 00000000/9586A970   F: 01000002/95834CA2                                
   310              END OF SYMPTOM DUMP                                                                
06.14.21 S0919451  IEA993I SYSMDUMP TAKEN TO CMNSUP.INTL.CMN4.SYSMDUMP.G0111V00                        

Obviously you should start investigation into any such problem by following standard diagnostic procedures:  

  • Check the messages in the SYSLOG and started task output (e.g. the JESMSGLG, SERPRINT, SYSPRINT, etc.).  Could any be related to or even explain the abend?  
  • Were any jobs running at the time that may have triggered the abend?  
  • Consider what has changed in the system or ZMF instance that may explain the cause of the abend?  
  • Look up the dump information and any unusual or unexpected messages in the appropriate manuals or web sites, including the Serena Support web site Knowledgebase.

If the issue cannot be satisfactorily diagnosed and resolved after this investigation then open a case with Serena Support.  At this point simply supply a description of the problem, its impact (if known) and the SYMPTOM DUMP information above (i.e. everything between the ‘IEA995I SYMPTOM DUMP OUTPUT’ and the ‘END OF SYMPTOM DUMP’ messages above).  If the issue can be tracked back to a triggering event, for example the execution of a specific batch job, then send this output or information in at this time, too.   

Serena Support will assess the supplied information to see if this is a known issue and feedback accordingly.  If the problem cannot be diagnosed at this stage then Serena Support will request that you send us the started task output, the SYSMDUMP dataset and any related output that has not already been supplied (e.g. triggering batch job output) which will be required to progress investigation.

Getting the SYSMDUMP to Serena

To send us the information required to diagnose the problem, please use the following process:

a. Compress the dump file using the PACK option of IBM's TRSMAIN utility.  Sample JCL based on the previous dump example follows:

//(insert jobcard)
//STEP     EXEC PGM=TRSMAIN,PARM=PACK                         
//SYSPRINT DD   SYSOUT=*                                      
//OUTFILE  DD   DISP=(NEW,CATLG),UNIT=SYSDA,                  
//       DSN=CMNSUP.INTL.CMN4.SYSMDUMP.TRS,                   
//       SPACE=(CYL,(50,50),RLSE)                             

Note: The started task will need to be stopped before the dump file is released.  In this example, the task has already been restarted so we are PACKing the -1 generation of the dataset. If the task had not yet been restarted we would have PACKed the 0 generation of the dump dataset.

This job will create a new dataset named ‘CMNSUP.INTL.CMN4.SYSMDUMP.TRS’ which contains the packed dump records with a fixed length of 1024 bytes.  

b. When the dump was requested, Serena Support will also have supplied credentials to connect to a FTP site.  The PACKed dump file will need to be sent to this site using the supplied credentials.  There are several different manners in which this can be achieved.  Some sites may allow transmission to the Serena FTP site directly from their existing mainframe environment.  Others may require that the file be downloaded to the user’s distributed environment and sent via web browser or FTP Client software.  However, the important factors here are that:

  • the dataset should always be treated as a binary file.
  • no EBCDIC/ASCII data conversion processing should be executed against it.
  • no Carriage Return or Line Feed (CR/LF) options should be specified during any transmission process.
  • the file should never be renamed to specify a ‘.txt’ or any similar, common desktop file-type suffix.  
  • the data contains fixed, 1024 byte records, if this information is required.

Sample JCL to send 'CMNSUP.INTL.CMN4.SYSMDUMP.TRS' directly from the mainframe to the FTP site and rename it to a file named CMNSUP.INTL.CMN4.SYSMDUMP.TRS (no quote marks) follows:

//(insert jobcard)
//FTPIBM   EXEC PGM=FTP,REGION=4M                      
//SYSPRINT DD   SYSOUT=*                               
//OUTPUT   DD   SYSOUT=*                               
//INPUT    DD   *                                                                      
(supplied FTP site userid)                                              
(supplied FTP site password)
put 'CMNSUP.INTL.CMN4.SYSMDUMP.TRS'                    

Note: Many sites have varying rules and restrictions on the FTP sites that can be reached from both their mainframe and distributed environments.  If in any doubt about your site’s restrictions or requirements then please check with your Systems Programming team who will probably have the most experience in this area.

c. Also send us ALL of the accompanying job or started task output either to the FTP site or by attaching it to the case, if you have not already done so.

d. Let us know once transmission is complete.  Our FTP sites are not actively monitored in the same manner as case updates and attachments.  If you do not tell us you have sent a file to the FTP site then we may never actually know.

e. And please supply the dump size information covered by KB article S133277 on the Serena Support website.  Several times in the past we have been supplied with incomplete dump files from customer sites.  A trait of SYSMDUMPs is that it is not too easy to identify that files have been truncated somewhere during the compression or transmission processes.  To do this:

  • invoke the Interactive Problem Control System (IPCS) application in your ISPF environment (the option and location will vary from site to site – again, check with your Systems Programmers if in doubt).
  • in IPCS Option 0 (Defaults) enter the Source DSNAME in the following manner:
BLSPSETD ---------------- IPCS Default Values ---------------------------------
Command ===>                                                                   
  You may change any of the defaults listed below.  The defaults shown before  
  any changes are LOCAL.  Change scope to GLOBAL to display global defaults.   
  Scope   ==> LOCAL   (LOCAL, GLOBAL, or BOTH)                                 
  If you change the Source default, IPCS will display the current default      
  Address Space for the new source and will ignore any data entered in         
  the Address Space field.                                                     
  Source  ==> DSNAME('CMNSUP.INTL.CMN4.SYSMDUMP.G0111V00')                     
  Address Space   ==>                                                          
  Message Routing ==>                                                          
  Message Control ==>                                                          
  Display Content ==>                                                          
Press ENTER to update defaults.                                                
Use the END command to exit without an update.                                 
  • press the < enter > key.
  • press the < PF3 > key to return to the IPCS PRIMARY OPTION MENU and select option 1 (Browse).
  • in panel BLSPOPT press < enter > to browse the dump.  The following type of messages will be issued:
 IKJ56650I TIME-03:14:17 AM. CPU-00:00:12 SERVICE-19546281 SESSION-02:46:48 DECEMBER 16,2015   
 BLS18122I Initialization in progress for DSNAME('CMNSUP.INTL.CMN4.SYSMDUMP.G0111V00')     
 BLS18124I TITLE=JOBNAME SERSUPI4 STEPNAME SER4             SYSTEM 0C4                         
 BLS18223I Dump written by z/OS 01.13.00-0 SYSMDUMP - level same as IPCS level                 
 BLS18222I z/Architecture mode system                                                          
 BLS18160D May summary dump data be used by dump access?  Enter Y to use, N to bypass.         
  • type ‘Y’ and press < enter >.
  • once complete, press < PF3 > twice to return to the IPCS PRIMARY OPTION MENU.
  • select option 4 (Inventory).
  • next to your current dump file type the ‘lz’ line command:
BLSPDUIN NTORY - SNEVIN.DDIR -----------------------------------------------------------------------
Command ===>                                                                       SCROLL ===> CSR  
AC Dump Source                                                       Status                                                        
lz DSNAME('CMNSUP.INTL.CMN4.SYSMDUMP.G0111V00')  . . . . . . . . . . OPEN                                                          
   Title=JOBNAME SERSUPI4 STEPNAME SER4             SYSTEM 0C4                                                                     
   Psym=RIDS/SERBSAM#L RIDS/#UNKNOWN AB/S00C4 VALU/H400C1813 REGS/B1C38 PRCS/00000010                                              
  • press < enter > and the following type of information will be displayed:
BLSPNTRC UT STREAM ------------------------------------------------------------------ Line 0 Cols 1 130 
Command ===>                                                                           SCROLL ===> CSR  
 ******************************************* TOP OF DATA ************************************************
 Source of Dump                                                            Blocks               Bytes                              
 DSNAME('CMNSUP.INTL.CMN4.SYSMDUMP.G0111V00')  . .  . . . . . . . . . . .  24,858  . . .  103,409,280                              
     0221D000.:0221DFFF. RECORD(15984) POSITIONS(64:4159) ABSOLUTE                                                                 
     03E04000.:03E05FFF. RECORD(2977:2978) POSITIONS(64:4159) ABSOLUTE                                                             

- Send us the first 3 lines of data displayed on this panel, BLSPNTRC. 

4. Common mistakes?

As with any changes to existing functionality supplied in sample JCL, there is always room for the changes to be incorrectly applied to the components that are running in the live environment.  In the context of this particular article, this is the started task JCL running in your system procedure library.  Obviously many different problems are possible when converting your tasks from SYSUDUMPs to SYSMDUMPs.  However, a couple exist which seem to have affected several different customers.  Therefore we thought it useful to point them out here.

a) Writing SYSMDUMP data to SYSOUT classes

SYSMDUMP data is only useful when written to a dataset.  Writing this data to SYSOUT=* (or any specific SYSOUT class) is of no use to anyone and the data cannot be used for diagnostic purposes.  In fact, it is only liable to get your Operations teams complaining to you when you start filling their spool datasets and output management software with data that is of absolutely no use to anyone.  So, under no circumstances write SYSMDUMP data to a SYSOUT class.  If you do not wish to convert to a dump dataset for any reason then you would be better advised to stick with a SYSUDUMP file in your started task JCL.  

b) Ensure that you code the SYSMDUMP DD statement with DISP=MOD 

As stated at the start of this article, the sample SYSMDUMP file is coded with ‘DISP=(MOD,CATLG,CATLG)’:

 //SYSMDUMP  DD DISP=(MOD,CATLG,CATLG),             * SYSMDUMP         
//             DSN=somnode.SERCOMC.SYSMDUMP( 1),                      
//             UNIT=SYSDA,SPACE=(CYL,(200,100),RLSE),                 
//             DCB=(DSORG=PS,RECFM=FBS,LRECL=4160,BLKSIZE=4160)       

However, in several customer sites this has mutated to a ‘DISP=(NEW,CATLG,CATLG)’ or ‘DISP=(,CATLG,CATLG)’ when applied to the started task JCL.  This is not good.  

If the SYSMDUMP dataset is coded with a NEW disposition, only the very last abend in the started task will be captured as the dump processing will continually overwrite the data already resident in the file.  When any abend occurs in the started task it is liable to leave threads or subtasks hanging.  So, when the task is subsequently shutdown these threads are particularly prone to other, related abends, such as S33E or S0C1s, when they are terminated.  If DISP=NEW has been coded or defaulted, this shutdown abend will overwrite the existing contents of the dump file, obliterating any earlier dumps in the process.  We will therefore have no dump data available covering the earlier abend(s) to assist in diagnosis.

c) Allocate the dump file as a Generation Data Group (GDG) dataset 

We have also seen some customers define the SYSMDUMP dataset as a fixed-name dataset rather than a GDG.  For basically the same reasons as those already covered in the DISP=MOD discussion, doing this is not ideal.  In the activity (a.k.a. chaos) that can ensue after a ZMF abend it would be easy to forget to copy the dump file out to another dataset before restarting the ZMF task.  Obviously making the system re-available to users will be the highest priority.  However, this could at best also result in the dump file being unavailable to be sent to us for investigation until the task is next stopped.  At worst, you will again be risking overwriting of the data that it contains before a copy can be taken.  Therefore, it is much safer and will ultimately ease the management of the dataset if it is allocated as a GDG file.   

5. In conclusion

Hopefully this article sheds some light on the reasons for the ZMF Server started task JCL conversion to SYSMDUMPs and/or the procedures required to handle them.  Remember, this change applies to the ZMF Server started task JCL only.  For most other ZMF-related JCL, and unless stated otherwise, SYSUDUMP or SYSABEND dump files are entirely sufficient.  And if you have inadvertently implemented your SYSMDUMPs with any of the common errors documented above, please correct them before they complicate progression of any issues that you may encounter in the future.



How To-Best Practice
Comment List