z/OS Troubleshooting
S0C2 privileged operation exception
S0C2 is a privileged-operation exception: the program tried to execute a supervisor-state instruction while in problem state. It usually means execution branched into data.
What it means
- Only the operating system may execute privileged instructions; an application hitting one has gone off the rails.
- Like S0C1, the root cause is normally a wild branch into a data area that happens to decode as a privileged op.
Common causes
- Wild branch after a storage overlay corrupted a return address.
- Calling an entry point that does not exist in the loaded module.
- Executing data as code after falling through past the end of the program.
How to diagnose
- Map the PSW to the load module; confirm it points outside executable code.
- Inspect the dump for the overlay source — check recent MOVEs into group items.
- Verify the program was link-edited correctly and the right module loaded.
How to fix it
- Fix the overlay or bad branch that sent execution into data.
- Ensure clean program termination on all paths.
Example: Validate before branching (defensive)
* Keep program flow explicit - every PERFORMed paragraph
* must be reached by a CALL/PERFORM, never by falling through.
PERFORM 100-INIT
PERFORM 200-PROCESS
STOP RUN.
Explicit control flow keeps execution inside real code.
Interview tip
- Q: How would you troubleshoot a S0C2 privileged operation exception in production?
- A: I would treat it like a wild branch: confirm the PSW is outside executable code, then find the overlay or bad call that redirected execution.
Prevention checklist
- Code reviews on program flow.
- Storage-protection testing tools in QA.
