CEE3250C: System or user abend issued
CEE3250C means a system abend or user abend occurred while a Language Environment program was running, and nothing handled it, so Language Environment reported it and ended the thread. The abend code in the message, such as SB37 or S806, is the real problem to solve.
Other names for this code
Also written as CEE3250, CEE3250C abend, CEE3250C SB37, CEE3250C U4038, the system or user abend was issued, LE abend message CEE3250C.
What it means
Language Environment watches for problems in the programs it runs. Program checks such as an 0C4 or 0C7 have their own messages, CEE3204S and CEE3207S for example. Any other abend that reaches Language Environment, a system abend like SB37 or S878 or a user abend issued by some routine, is reported with CEE3250C.
The message gives the abend code and the reason code, written like SB37 R=00000004. A user abend shows with a U, and a user abend without a reason code can show R=NULL. The message may add where the program was when it happened.
The C suffix marks a critical condition. Language Environment writes its traceback and dump as the TERMTHDACT runtime option asks, then ends the thread. In practice the step usually ends with the original abend code.
So CEE3250C isn't the cause of anything. It tells you that Language Environment saw the abend. The abend code inside it is what to look up and fix.
In CICS the message and dump output go to the CESE transient data queue. IBM notes that tools such as Abend-AID may not capture a dump for these abends unless TERMTHDACT is set to UADUMP.
Common causes
- Out-of-space abends such as SB37, SD37 or SE37 while the program was writing a data set.
- Storage abends such as S878 or S80A when the region was too small for the run.
- S806 when a module the program loads or calls dynamically wasn't found.
- A user abend issued by a vendor product or a shop routine the program called. The meaning of a user abend depends entirely on who issued it.
- Abends inside system or runtime services the program used, such as SA78 reported from inside a C runtime routine in IBM APAR PQ54908.
How to find the problem
- Read the abend code and reason code from the CEE3250C line in SYSOUT or CEEMSG.
- Look in the JES job log for the system messages that go with that abend. IEC030I or IEC031I goes with a B37 or D37, and CSV003I goes with an S806.
- Use the traceback in the CEEDUMP to see which routine was active and which program called it.
- For a user abend, work out which product or routine issued it before looking up the code. User abend numbers mean different things in different products.
- In CICS, check the CESE queue, and use the CLER transaction to see the TERMTHDACT setting if no dump was produced.
How to fix it
- Fix the underlying abend. Add space for a B37, more region for an 878, or the missing library for an 806.
- For a user abend from a vendor product, check that product's messages and manual for the code.
- If you need a dump that your tools can capture in CICS, set TERMTHDACT(UADUMP) as IBM describes. Dump-producing settings add overhead, so use them with care in production.
- Check that the runtime options in force (for example TRAP and TERMTHDACT) are the ones you expect, using the options report or CLER.
What it looks like
CEE3250C The system or user abend SB37 R=00000004 was issued.
IBM documentation
IBM documentation: CEE3250C. Use the documentation for your installed release.
Related codes
Questions
Is CEE3250C the error I need to fix?
No. It wraps another abend. Fix the abend code shown inside the message, such as SB37 or S806.
What does R=NULL mean in CEE3250C?
The abend was issued without a reason code. That is common for user abends.
Why didn't Abend-AID capture the abend in CICS?
IBM has seen this when the TERMTHDACT runtime option isn't set to UADUMP. With UADUMP, CICS processes the dump so the tool can capture it.