SEC6: z/OS UNIX callable service error or signal
An SEC6 abend means z/OS UNIX System Services ended the program, either because a UNIX callable service failed or because the process received a signal that ends it. The reason code says which. Codes ending in C008 mean the process couldn't be set up as a UNIX process, and FFxx or FDxx mean it was ended by signal xx.
Other names for this code
Also written as EC6, abend EC6, S EC6, system abend EC6, EC6 abend reason code, EC6-0000FF09, EC6 C008.
What it means
Programs reach z/OS UNIX through callable services, the BPX1xxx and BPX4xxx routines that sit behind C functions, Java, shell commands and BPXBATCH. When one of those services hits an error it can't return to the caller, or when a process gets a signal whose action is to end it, the system ends the program with system completion code EC6.
The reason code is usually in register 15 and in the IEA995I symptom dump, in the form xxxxyyyy. The first half is internal to IBM. The last four hex digits are the part that's documented. The groups you'll meet most are these.
FFxxandFDxxmean the process was ended by signal number xx, in hex. FF means no dump was needed, and FD means a dump was requested. This is the EC6 you see when a process is killed, or when a program takes an exception it doesn't handle.C008means the system couldn't dub the task, which is the step that makes an MVS task into a UNIX process. The usual cause is a user ID with no OMVS segment in the security product.C01AtoC01Fare security setup problems with the user ID, group, UID or GID.C02Fmeans the caller must be APF authorized.C032means a file system program marked with the sticky bit wasn't found in the MVS search order (STEPLIB, LPA or the link list).C036means the address space is running as a controlled environment and the program being run from the file system isn't program-controlled.8002andFFF7mean z/OS UNIX wasn't running.FFFFmeans a program called _exit from a task that still had subtasks, extra request blocks or linkage stack entries.
Many other reason codes cover internal kernel, file system and sysplex errors. Those usually need IBM support rather than an application fix.
Common causes
- The process was ended by a signal, for example a kill command, a timeout in a script, or an unhandled program exception in a C or Java program (reason FFxx or FDxx).
- The user ID running the job or started task has no OMVS segment, so the first UNIX service call can't set up the process (C008).
- The user's UID, GID or group isn't set up correctly in RACF or another security product (C01A to C01F).
- A program that needs APF authorization runs from a library that isn't authorized (C02F), a sticky-bit program has no copy in the MVS search order (C032), or a program that isn't program-controlled is run in a controlled environment (C036).
- z/OS UNIX isn't up yet, or was restarted, when the program called a service (8002, FFF7, 8004).
- A multitasking program called _
exit while it still had subtasks attached (FFFF).
How to find the problem
- Find the reason code in the IEA995I symptom dump or the dump header, for example
SYSTEM COMPLETION CODE=EC6 REASON CODE=0F01C008. Read the last four digits. - For FFxx or FDxx, convert xx from hex and look it up in the signal list in the z/OS UNIX System Services Programming: Assembler Callable Services Reference. Then work out who sent the signal or what exception caused it.
- For C008, check the user ID's OMVS segment with the RACF command
LISTUSER userid OMVS, or the equivalent in ACF2 or Top Secret. - Check the job log and the system log for BPX messages issued with the abend, such as BPXP028I or BPXF219I. They often name the program or resource.
- For 8002 or FFF7, use
D OMVSto check that z/OS UNIX is active.
How to fix it
- For C008, give the user ID an OMVS segment with a UID and a home directory, then rerun or restart the task.
- For signals, find the sender or the program exception and fix that. If a script or operator killed the process on purpose, there's nothing more to fix.
- For security codes, correct the user's UID, GID or group definitions.
- For C02F, run the program from an APF-authorized library. For C032, put the module in STEPLIB, LPA or the link list, or turn off the sticky bit. For C036, have your security team mark the program as program-controlled.
- For 8002 and FFF7, start z/OS UNIX (or wait for it) and rerun.
- For internal reason codes, search IBM's support site for the code and open a case with the dump if no fix exists.
What it looks like
IEA995I SYMPTOM DUMP OUTPUT SYSTEM COMPLETION CODE=EC6 REASON CODE=0F01C008 IEF450I PAYRUN01 STEP010 - ABEND=SEC6 U0000 REASON=0F01C008
IBM documentation
IBM z/OS: EC6. Use the documentation for your installed release.
Related codes
Questions
Why does my job get SEC6 with a reason code ending in C008?
The user ID has no usable OMVS segment, so z/OS can't make the task a UNIX process. Add an OMVS segment with a UID for that user, then rerun.
Does SEC6 FF09 or FD09 mean my program crashed?
Not always. FFxx and FDxx mean the process received a signal that ends it. That can come from a kill command, a parent process or a timeout, as well as from a program exception.
Why don't I get a dump for some EC6 abends?
IBM ships SLIP traps in parmlib member IEASLP00 that suppress dumps for common signal-related EC6 codes. Without them, those abends would produce a large number of dumps.